有了这个给定的数据。
{ "_id" : 0, "a" : 0, "b" : 0, "c" : 21 }
{ "_id" : 1, "a" : 0, "b" : 0, "c" : 54 }
{ "_id" : 2, "a" : 0, "b" : 1, "c" : 52 }
{ "_id" : 3, "a" : 0, "b" : 1, "c" : 17 }
{ "_id" : 4, "a" : 1, "b" : 0, "c" : 22 }
{ "_id" : 5, "a" : 1, "b" : 0, "c" : 5 }
{ "_id" : 6, "a" : 1, "b" : 1, "c" : 87 }
{ "_id" : 7, "a" : 1, "b" : 1, "c" : 97 }
查询是这样的
db.fun.aggregate([{
$group: {
_id: { a: "$a", b: "$b" },
c: { $max: "$c" }
}
}, {
$group: {
_id: "$_id.a",
c: { $min: "$c" }
}
}])
正确答案是
54 and 22
怎么会这样?我期待成为97 and 21
为什么我认为 97 为最大值,21 为最小值?因为所有具有相似值的文档(即a和b)c最高,最低为21
有人可以向我详细说明吗?以及 $group 是如何工作的?