【问题标题】:mongodb aggregation> $group max main array in documentmongodb 聚合> $group max 文档中的主数组
【发布时间】:2021-06-21 00:41:11
【问题描述】:

我有文档数组需要按日期分组,并按日期给出 dat 数组的 max 、 min 和 avg 。但无法得到结果,因为 dat 是数组。

    "ArryObj": [{
    "dat": [-84.2, -83.9, -84.9, -85.3, -86.8, -85.6, -84.6, -86.4],
    "Date": "26-05-2021",
    "Time": "13:02:42",
    },{
    "dat": [-90.2, -83.9, -84.9, -85.3, -86.0, -85.0, -84.2, -86.4],
    "Date": "26-05-2021",
    "Time": "13:02:42",
    },
    {
    "dat": [-100.2, -83.9, -90, -85.3, -86.0, -85.0, -84.2, -86.4],
    "Date": "27-05-2021",
    "Time": "13:02:42",
    },
    {
    "dat": [-80, -79.9, -63, -79.3, -78.0, -76.0, -77.2, -79.4],
    "Date": "28-05-2021",
    "Time": "13:02:42",
    }
]

我试过了:但我们得到了结果

db.deviceregisters.aggregate([
    {$match:{_id:ObjectId('00a71c5bcc4d86315b638250')}},
    {$project:{_id:0,
            dataCollection:1,
          
    }},
    {$unwind:"$ArryObj"},
    {
        $group:{_id:{date:"$ArryObj.Date"},maxNum:{$max:'$ArryObj.dat'},minNum: 
        {$min:'$ArryObj.dat'}}
    }
]).pretty()

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework


    【解决方案1】:

    您可以在分组时使用$min$max$avg 运算符。

    db.collection.aggregate([
      { "$unwind": "$ArryObj" },
      { "$unwind": "$ArryObj.dat" },
      {
        "$group": {
          "_id": "$ArryObj.Date",
          "average": { "$avg": "$ArryObj.dat" },
          "min": { $min: "$ArryObj.dat" },
          "max": { $max: "$ArryObj.dat" }
        }
      }
    ])
    

    工作Mongo playground

    【讨论】:

      猜你喜欢
      • 2019-03-27
      • 1970-01-01
      • 2014-08-19
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2021-10-24
      相关资源
      最近更新 更多