Mongodb 未找到$匹配项时的$addFields
我是新的Mongodb开发者我写了Mongodb聚合。我的一个字段lampStatus:OFF是30记录是否有Iam使用{$match:{lampStatus:OFF}}我有30条记录,但“lampStatus:OFF”没有记录,我获取了0条记录,但如何在上述聚合中获取零值Mongodb 未找到$匹配项时的$addFields,mongodb,mongoose,aggregation-framework,Mongodb,Mongoose,Aggregation Framework,我是新的Mongodb开发者我写了Mongodb聚合。我的一个字段lampStatus:OFF是30记录是否有Iam使用{$match:{lampStatus:OFF}}我有30条记录,但“lampStatus:OFF”没有记录,我获取了0条记录,但如何在上述聚合中获取零值 db.collection.aggregate([ { $match:{'type':'L'}}, { $match: {lampStatus : "
db.collection.aggregate([
{ $match:{'type':'L'}},
{ $match: {lampStatus : "ON"}},
{ $group: { _id : null, TotalLights: { $sum: 1 } } },
{ $project: { _id: 0, TotalLights: 1 } }
])
输出:在0毫秒内获取了0条记录
expected outout:"TotalLights" : 0
您可以使用和聚合来执行此操作,这有点可笑
db.collection.aggregate([
{ "$facet": {
"array": [
{ "$match": { "type": "L", "lampStatus": "ON" }},
{ "$group": {
"_id": null,
"TotalLights": { "$sum": 1 }
}},
{ "$project": { "_id": 0, "TotalLights": 1 }}
]
}},
{ "$project": {
"TotalLights": {
"$ifNull": [{ "$arrayElemAt": ["$array.TotalLights", 0] }, 0 ]
}
}}
])
您可以使用和聚合来执行此操作,这有点可笑
db.collection.aggregate([
{ "$facet": {
"array": [
{ "$match": { "type": "L", "lampStatus": "ON" }},
{ "$group": {
"_id": null,
"TotalLights": { "$sum": 1 }
}},
{ "$project": { "_id": 0, "TotalLights": 1 }}
]
}},
{ "$project": {
"TotalLights": {
"$ifNull": [{ "$arrayElemAt": ["$array.TotalLights", 0] }, 0 ]
}
}}
])
一些聚合技巧可能在这里起作用,但如果您使用简单javascriptany可能在没有javascript any get output@Anthony Winzlet的情况下这样做会更好一些聚合技巧可能在这里起作用,但如果您使用简单javascriptany可能在没有javascript any get output@Anthony Winzlet的情况下这样做会更好