假设有以下数据集合:
{ "name": "John", "score": 70 }
{ "name": "Jane", "score": 80 }
{ "name": "Jim", "score": 60 }
{ "name": "Jack", "score": 90 }
我们想要将score高于等于70的人和score低于70的人分别存放在两个数组中。我们可以使用MongoDB的$cond表达式和$group操作符来实现这个目标:
db.collection.aggregate([
{
$group: {
_id: {
$cond: {
if: { $gte: [ "$score", 70 ] },
then: "greater_than_or_equal_to_70",
else: "less_than_70"
}
},
names: { $push: "$name" }
}
}
])
这将返回以下结果:
[
{
"_id": "greater_than_or_equal_to_70",
"names": [ "John", "Jane", "Jack" ]
},
{
"_id": "less_than_70",
"names": [ "Jim" ]
}
]
可以看到,经过分组操作之后,我们得到了两个数组,一个数组包含得分大于等于70的人,另一个数组包含得分小于70的人。