在 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": []}]

PlayMongo

docs.aggregate(
[{"$group": 
   {"_id": null, "count": {"$sum": 1},
    "results": {"$push": "$$ROOT"}}},
 {"$unionWith": {"coll": "empty_result"}},
 {"$sort": {"count": -1}},
 {"$limit": 1}])