2017-03-24 136 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/)功能進行調查。 –