假设我有此文件:
文档1:
_id:"1"
name:"Item 1"
quantity:1
min:3
alert:"Yes"
文档2:
_id:"2"
name:"Item 2"
quantity:12
min:5
alert:"No"
如何仅获取警报值为“是”的文档,而排除警报值为“否”的文档?
我从一些汇总中得到的那些文件:
[
{
'$group': {
'_id': '$id',
'name': {
'$first': '$name'
},
'sum_quantity': {
'$sum': '$quantity'
},
'alertMin': {
'$first': '$alertMin'
}
}
}, {
'$project': {
'_id': '$_id',
'name': '$name',
'quantity': '$sum_quantity',
'minimum': '$alertMin',
'alert': {
'$cond': [
{
'$lte': [
'$sum_quantity', '$alertMin'
]
}, 'Yes', 'No'
]
}
}
}
]
我希望得到以下结果:
_id:"1"
name:"Item 1"
quantity:1
min:3
alert:"Yes"
答案 0 :(得分:0)
在$match
管道的末尾(或您希望匹配的任何地方)添加一个aggregation
阶段,它将为您提供所需的结果。
{
$match : {
alert : "yes"
}
}
详细了解$match here
答案 1 :(得分:0)
您可以使用单个管道阶段$ match来实现。您不需要使用任何其他阶段。
请尝试以下操作:
db.collection.aggregate([
{
$match: {
alert: "Yes"
}
}
])