2015-09-14 15 views
9

Tôi có pipline tập hợp sauMongoDB Đếm sau khi tập hợp C# 2.0 điều khiển

var count = dbCollection. 
Aggregate(new AggregateOptions { AllowDiskUse = true }).Match(query). 
Group(groupby). 
ToListAsync().Result.Count(); 

Và điều này được các kết quả sau:

{ 
    "result" : [ 
     { 
      "_id" : { 
       "ProfileId" : ObjectId("55f6c727965bb016c81971ba") 
      } 
     }, 
     { 
      "_id" : { 
       "ProfileId" : ObjectId("55f6c727965bb016c81971bb") 
      } 
     } 
    ], 
    "ok" : 1 
} 

Nhưng có vẻ như nó sẽ làm cho hoạt động đếm trên máy khách, nhưng làm thế nào để thực hiện nó trong MongoDb? Tôi có MongoDb 2.0 C# driver & MongoDb v. 3.0.2

+0

https://docs.mongodb.org/getting-started/csharp/aggregation/#group-documents-by-a-field-and-calculate-count – ThrowsException

+1

@ThrowsException OP cần đếm số của các kết quả, không phải là số đếm cho mỗi _id –

+1

Bạn có thể cho ví dụ về bộ sưu tập của mình và giải thích chính xác những gì bạn muốn đếm không? Tôi không rõ ràng về mục tiêu truy vấn của bạn. Ngoài ra, vui lòng thêm truy vấn và câu lệnh nhóm cho câu hỏi. – agarcian

Trả lời

6

Thêm một lĩnh vực liên tục để chức năng nhóm của bạn và sau đó nhóm lại trên các lĩnh vực liên tục (do đó tất cả các kết quả được nhóm vào một nhóm duy nhất) với một khoản tiền tổng 1. Đầu tiên (và chỉ) kết quả sẽ có tổng.

Ví dụ:

var count = dbCollection. 
Aggregate(new AggregateOptions { AllowDiskUse = true }).Match(query). 
Group(groupby).Group(<id>:{ConstantField},Total:{$sum:1}) 
ToListAsync().Result.First().GetValue("Total"). 
Các vấn đề liên quan