2015-08-13 19 views
1

當我運行dbCollection.Aggregate().Group(groupby).Match(query)我沒有任何擴展方法來獲得聚合的記錄數。但我可以運行ToListAsync,然後獲得Count()。我怎樣才能收到一些記錄? 我有MongoDb v 3.0.2c# driver 2.0MongoDb c#2.0驅動程序 - 我如何計算服務器上的聚合計數?

+0

聽起來你正試圖建立像什麼Solr的或彈性搜索返回一個「總數」的結果以及任何過濾的數據。爲此,您應該運行單獨的查詢,如果這是您真正要求的。 –

+0

我想要得到返回結果的數量而不會收到這些結果 –

+1

聚合返回的「遊標」目前不支持來自'.find()'的標準遊標這樣的事情。要獲得聚合結果數,最好做你正在做的事情,或者如果流式傳輸響應,則按照計算結果進行計數並將結果添加到輸出流中。 –

回答

3

你應該增加一個組$總和

var result = await collection 
     .Aggregate() 
     .Group(groupby) 
     .Match(query) 
     .Group(new BsonDocument 
     { 
      { "_id", "_id" }, 
      {"count", new BsonDocument("$sum", 1)} 
     }) 
     .FirstAsync(); 
     var count = result["count"].AsInt32; 
相關問題