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。
我该怎么办?
谢谢您的建议。
答案 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'
}
}
}
}
}
}