我只能看到这样的情况下,可能出现这样的:
{ "like": 1, "id": 3, "val": 7 },
{ "like": 1, "id": 3, "val": 7 },
{ "like": 2, "id": 3, "val": 5 },
{ "like": 2, "id": 2, "val": 5 },
然后在汇总:
db.collection.aggregate([
{ "$group": {
"_id": "$like",
"id": { "$push": "$id" },
"val": { "$max": "$val" }
}},
{ "$project": {
"_id": "$id",
"val": 1
}}
])
其中给出:
{ "_id" : [ 3, 2 ], "val" : 5 }
{ "_id" : [ 3, 3 ], "val" : 7 }
对于这我们回到,$all
条件我基本上被认为是“套”,就像$in
一样。这意味着[3,3]
基本上减少到3
。因此,如果你想要一个“明确”的匹配,那么请这样做:
db.collection.aggregate([
{ "$group": {
"_id": "$like",
"id": { "$push": "$id" },
"val": { "$max": "$val" }
}},
{ "$project": {
"_id": "$id",
"val": 1
}},
{ "$match": {
"_id": [3,3]
}}
])
是。完整的谎言,因为'_id'不能是一个数组。 –
我想你错过了我的问题的一部分,说它的聚合管线提取物,我可以是一个数组,因此 –
我想你错过了你的问题的一部分,以显示你的工作和证明。 –