【问题标题】:Meteor - Mongo aggregate does not have $count stage [duplicate]Meteor - Mongo 聚合没有 $count 阶段 [重复]
【发布时间】:2017-05-30 23:12:12
【问题描述】:

我正在使用meteorhacks:aggregate 包在 Meteor 中进行 Mongo 聚合。我想在管道的最后阶段获得计数,所以我使用以下代码:

Message.aggregate([
  {
    $match: {
      // ...
    }
  }, {
    $count: 'count'
  }
]);

这很简单,应该可以工作,但我只得到这个错误:

Exception while invoking method 'methodname' 
MongoError: Unrecognized pipeline stage name: '$count'
...

请帮忙,谢谢。

更新:这个问题没有像编辑建议的那样重复,我的主要目的是找出为什么我不能使用$count

【问题讨论】:

    标签: mongodb meteor mongodb-query aggregation-framework


    【解决方案1】:

    $count 在 mongodb 3.4 版中可用。对于以前的版本, 您需要在常量字段上使用$group

    Message.aggregate([
      {
        $match: {
          // ...
        }
      }, {
        $group: {
          _id : null, 
          count : {$sum : 1}
        }
      }
    ]);
    

    【讨论】:

    • 感谢您的回答,尽管这不是我想要的。我很清楚我可以使用$group 来完成这项工作,但我只是想知道为什么我不能使用$count,尽管它确实存在
    • $count 聚合管道是在 3.4 版本中引入的。您使用的是哪个版本? jira.mongodb.org/browse/SERVER-27335
    • 哦,我明白了,我没注意到 $count 仅在 3.4 中可用。非常感谢,也请编辑您的答案,我会将其标记为正确答案
    • 对于未来的人:我以为我使用的是足够新的 mongo 版本,因为我的 mongoose 的 package.json 是 4.12.4,但 mongodb 的版本仍然是 3.2.20
    猜你喜欢
    • 1970-01-01
    • 2020-10-16
    • 2020-05-02
    • 2019-10-14
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    相关资源
    最近更新 更多