来自空数组的MongoDB组不返回任何内容

时间:2017-03-23 07:42:12

标签: mongodb mongodb-query aggregation-framework

我将MongoDB与Mongoose(Node.js)一起使用,我必须在聚合中对匹配结果进行分组。
喜欢,

db.test.aggregate([
  {
      $match: {
          type: 1
      }
  },
  {
    $group : {
       _id : null,
       count: { $sum: 1 }
    }
  }
])

如果匹配了10个项目,那么结果将是

[
  {
    "_id": null,
    "count": 10
  }
]

当然,如果没有一个匹配,我希望结果是

[
  {
    "_id": null,
    "count": 0
  }
]

但是,我得到了以下结果。

[]

如果我想得到预期的结果,我该怎么办? 感谢您提前给予的帮助。

2 个答案:

答案 0 :(得分:1)

在这种情况下,您不需要aggregate,您可以使用简单的count来计算匹配的项目:

db.collection.count({
     type: 1
});

它总是返回一些东西,例如0如果不匹配。

答案 1 :(得分:-1)

你应该按某种方式分组(_id不应该为空)。尝试类似:

db.test.aggregate([
  {
      $match: {
          type: 1
      }
  },
  {
    $group : {
       _id : "$type",
       count: { $sum: 1 }
    }
  }
])