1

我的管道中有一个小组阶段,例如:

$group: {
  _id: null,
  count: {$sum: 1},
  results: {$push: '$$ROOT'}
}

有时$$ROOT是空的并且没有结果。在这些情况下,我在小组赛后得到一个空的结果,这不是我想要的行为。我想得到下面的对象,而不是零计数和空结果。

[
{
  count: 0,
  results: []
}
]

我怎样才能做到这一点?我试图替换根(通过replaceRoot),但似乎什么都没有也没有根。

4

1 回答 1

1

询问

  • 正常的方法我认为它在驱动程序上使用简单的代码
  • 但您也可以在数据库上使用更复杂的代码
  • “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}])
于 2021-11-08T14:13:45.727 回答