2015-09-14 10 views
9

Ich habe folgende Aggregation piplineMongoDB Count nach der Aggregation # 2.0-Treiber C

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

Und das wird folgendes Ergebnis:

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

Aber es scheint, es Zähloperation auf Client machen, aber wie um es in MongoDb durchzuführen? Ich habe 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 die OP die Anzahl zu zählen braucht der Ergebnisse, nicht die Anzahl für jedes _id –

+1

Können Sie ein Beispiel für Ihre Sammlung geben und genau erklären, was Sie zählen möchten? Ich bin nicht klar über das Ziel Ihrer Anfrage. Fügen Sie außerdem die Abfrage und die groupby-Anweisungen zur Frage hinzu. – agarcian

Antwort

6

eine konstante Feldfunktion zu Ihrer Gruppe hinzufügen und dann die Gruppe wieder auf dem konstanten Feld (so dass alle Ergebnisse in eine einzige Gruppe zusammengefasst sind) mit einer Gesamtsumme von 1. Der ersten (und nur) Ergebnis wird die Summe haben.

Ex.

var count = dbCollection. 
Aggregate(new AggregateOptions { AllowDiskUse = true }).Match(query). 
Group(groupby).Group(<id>:{ConstantField},Total:{$sum:1}) 
ToListAsync().Result.First().GetValue("Total").