我有一系列这样的产品:
[
{
productName: "productB",
productImage: "http://some.url/product_B.jpg",
productCategoryId: 34,
productPrice: 10
},
{
productName: "productA",
productImage: "http://some.url/product_A.jpg",
productCategoryId: 34,
productPrice: 50
}
]
到目前为止我所拥有的内容如下:
db.local.aggregate(
[
{
"$match":{
"productCategoryId":34
}
},
{
"$facet":{
"byCategory":[
{
"$group":{
"_id":"productCategory",
"minprice":{
"$min":"$productPrice"
}
}
}
]
}
}
]
)
我需要按单个字段(类别)进行聚合/分组并获取每个类别的最低价格,但我还想返回文档的产品名称和图像(其他 2 个字段)以及每个类别的最低价格类别。任何人都可以指出一些方向或例子吗? groupBy和min都被覆盖了,只是提取额外信息的部分。 更新了我已经有的架构和聚合,@PulkitAgg1010 我希望它能够获取productImage和productPrice以记录每个类别的minPrice。
最佳答案
您可以使用以下聚合
db.collection.aggregate([
{ "$group": {
"_id": "$productCategory",
"doc": {
"$min": {
"minprice": "$productPrice",
"productName": "$productName",
"productCategory": "$productCategory"
}
}
}},
{ "$replaceRoot": { "newRoot": "$doc" }}
])
$min
始终取对象内部传递的第一个表达式的最小值。这就是值(value)。
关于MongoDB组获取字段及其各自数据的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61479285/