MongoDB组获取字段及其各自数据的最小值

标签 mongodb mongodb-query aggregation-framework

我有一系列这样的产品:

[
  {
    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/

相关文章:

python - PyMongo,绘图

spring - 我想在 Spring Data MongoDB 持久层中使用数字序列作为 ID。如何配置此行为?

javascript - 尝试使用 Express 简化对私有(private)帖子的访问

mongodb - 按小时分组并计数 MongoDB

mongodb - 如何在 MongoDB 中按楼层聚合

performance - 如何在 MongoDB 中关闭(临时)索引

javascript - 客户端上的 Meteor.js 集合为空

javascript - MongoDB Like Query(首字母或单词查找查询)

mongodb - 如何在mongo的嵌套文档中插入文档或字段

javascript - 计算键值的出现次数