MongoDB |从嵌套对象获取最大值

时间:2018-10-12 09:47:46

标签: mongodb aggregation-framework max

db.getCollection('post').find({'post_no':47}, {'comment': 1})

结果值为:

{
    "_id" : ObjectId("5bc05c038e798ccb0309658b"),
    "comment" : [ 
        {
            "comment_no" : 112
        }, 
        {
            "comment_no" : 113,
            "comment_group" : 1
        }, 
        {
            "comment_no" : 116,
            "comment_group" : 2
        }, 
        {
            "comment_no" : 117,
            "comment_group" : 3
        }, 
        {
            "comment_group" : 4,
            "comment_no" : 118
        }
    ]
}

我想获得comment_group的最大值4。

我该怎么办?

谢谢您的建议。

3 个答案:

答案 0 :(得分:1)

您可以尝试以下汇总

myList.get(0).size()

答案 1 :(得分:1)

db.collection.aggregate(

    // Pipeline
    [
        // Stage 1
        {
            $unwind: {
                path: "$comment",

            }
        },

        // Stage 2
        {
            $sort: {
                "comment.comment_group": -1
            }
        },

        // Stage 3
        {
            $limit: 1
        },

    ]



);

答案 2 :(得分:0)

您也可以在Anthony Winzlet答案的第二个项目中使用$reduce

{
  "$project": {
    "comment": {
      '$reduce': {
        'input': '$comment',
        'initialValue': {'$arrayElemAt': ['$comment', 0]},
        'in': {
          '$cond': {
            'if': {'$gt': ['$$this.comment_group', '$$value.comment_group']},
            'then': '$$this',
            'else': '$$value'
          }
        }
      }
    }
  }
}