2017-03-24 214 views
-1

我试图让我的聚合计数,但由于某种原因,我收到一个错误,说“$ count”是一个无法识别的聚合阶段。 我既想这蒙戈3.0和3.4壳mongodb聚合

db.collection1.aggregate([ 
    {$match:{'field1': "abc"}}, 
    {$count:"mycount"} 
]) 
+1

你可以确定你正在对3.4 mongod服务器实例运行shell吗?在shell上运行db.version()来检查。 – Veeram

+0

mongod版本实际上是3.0.11,但我使用的客户端是3.4,因此可以解释为什么 – IsaacBok

回答

1

$计数应在MongoDB中3.4工作

您可以使用$组在较低版本的聚集管道来算:

db.collection1.aggregate([ 
    {$match: {'field1': "abc"}}, 
    {$group: { 
     _id : null, 
     aggregationCount : {$sum : 1} 
    }} 
]) 
+0

你认为什么会返回更快:或者查找查询本质上做同样的事情? db.collection1.find({'field1':“abc”})。count() – IsaacBok

+0

即使'field1'(实际上是嵌套的)被索引,聚合也会花费很长时间 – IsaacBok

+0

@IsaacBok如果查询正在运行但花费很长时间,这是一个不同的问题。您应该使用[解释结果](https://docs.mongodb.com/manual/reference/explain-results/)功能进行调查。 –