没有找到 $match 时的 $addFields
Posted
技术标签:
【中文标题】没有找到 $match 时的 $addFields【英文标题】:$addFields when no $match found 【发布时间】:2019-02-03 21:35:51 【问题描述】:我是新的 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
【问题讨论】:
一些聚合技巧可能在这里有用,但如果你用简单的javascript来做会更好 任何可能没有 javascript 的任何获取输出@Anthony Winzlet 【参考方案1】:使用 $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 ]
])
【讨论】:
以上是关于没有找到 $match 时的 $addFields的主要内容,如果未能解决你的问题,请参考以下文章
String.contains 找到了一个子字符串,但没有找到 Pattern.matches?
替换多个 `Match` 没有 `MatchEvaluator` 的限制
$addFields 用于在 Python 中使用 MongoDB 的特定条目
MongoDB $addFields 使用 org.springframework.data.mongodb.core.MongoTemplate