mongodb - 未找到 $match 时的 $addFields
问题描述
我是新的 Mongodb 开发人员,我写了 mongodb 聚合。我的字段 lampStatus 之一:“OFF”是 30 个记录,我正在使用“{ $match: {lampStatus:“OFF”}}”我得到 30 条记录,但是“lampStatus:“OFF” '没有记录我正在获取 0 条记录,但如何在上述聚合中获得零值。
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
解决方案
你可以有点荒谬地用聚合来做到$facet
这$ifNull
一点
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 ]
}
}}
])
推荐阅读
- ios - 使用约束的 UIImageView 的折叠和展开动画
- jenkins - 詹金斯显示量角器测试是成功的,即使它们失败了
- mysql - 在 Kubernetes 作业中将文件通过管道传输到标准输入
- sql - 将子查询构建为列/字段名称
- input - 在 p5.js 中编辑带有文本的输入框
- node.js - DialogFlow v2 错误:资源名称 '' 与 'projects/*/locations/*/agent/environments/*/users/*/sessions/*' 不匹配
- php - 如何在 Woocommerce 中的增值税旁边插入税率百分比
- c - 单词功能有问题
- sql - 日期/日历表中连续交易假期的最大数量
- javascript - 如何将 Google 地图 API 链接到 C# Window 窗体应用程序