在 mongo 聚合中替换小组阶段输出的空结果
Replace empty result from group stage output in mongo aggregation
我的管道中有一个小组阶段,例如:
$group: {
_id: null,
count: {$sum: 1},
results: {$push: '$$ROOT'}
}
有时$$ROOT是空的,没有结果。在这些情况下,我在小组赛阶段后得到一个空结果,这不是我想要的行为。我想获得以下对象,而不是零计数和空结果。
[
{
count: 0,
results: []
}
]
我怎样才能做到这一点?我试图替换根(通过 replaceRoot),但似乎什么都没有时也没有根。
查询
- 正常的方法我认为它在驱动程序上用简单的代码
- 但是也可以在数据库上做,代码比较复杂
- "empty_result" 是一个包含这个的集合
[{"count": 0,"results": []}]
docs.aggregate(
[{"$group":
{"_id": null, "count": {"$sum": 1},
"results": {"$push": "$$ROOT"}}},
{"$unionWith": {"coll": "empty_result"}},
{"$sort": {"count": -1}},
{"$limit": 1}])
我的管道中有一个小组阶段,例如:
$group: {
_id: null,
count: {$sum: 1},
results: {$push: '$$ROOT'}
}
有时$$ROOT是空的,没有结果。在这些情况下,我在小组赛阶段后得到一个空结果,这不是我想要的行为。我想获得以下对象,而不是零计数和空结果。
[
{
count: 0,
results: []
}
]
我怎样才能做到这一点?我试图替换根(通过 replaceRoot),但似乎什么都没有时也没有根。
查询
- 正常的方法我认为它在驱动程序上用简单的代码
- 但是也可以在数据库上做,代码比较复杂
- "empty_result" 是一个包含这个的集合
[{"count": 0,"results": []}]
docs.aggregate(
[{"$group":
{"_id": null, "count": {"$sum": 1},
"results": {"$push": "$$ROOT"}}},
{"$unionWith": {"coll": "empty_result"}},
{"$sort": {"count": -1}},
{"$limit": 1}])