2017-01-16 68 views
9

我使用meteorhacks:aggregate包来做流星中的Mongo聚合。我想,所以我用这个代码来获得在管道的最后阶段计数:

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

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

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

请帮助, 谢谢。

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

回答

18

$count是MongoDB中3.4版可用。对于以前的版本, 您需要在恒定字段上使用$group

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

感谢您的回答,虽然这不是我正在寻找的。我很清楚我可以使用'$ group'来完成这项工作,但我只是想知道为什么我不能使用'$ count',尽管它确实存在 – Khang

+0

'$ count'聚合管道是在版本中引入的3.4。你正在使用哪个版本? https://jira.mongodb.org/browse/SERVER-27335 – ares

+0

哦,我明白了,我不好意思,我没注意到'$ count'只能在3.4中使用。非常感谢,也请编辑您的答案我会将其标记为正确的答案 – Khang