2015-09-14 14 views
9

Ho la seguente pipline aggregazioneMongoDb Conte dopo l'aggregazione C# 2.0 conducente

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

E questo diventa il seguente risultato:

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

Ma sembra che farà operazione di conteggio sul client, ma come per eseguirlo in MongoDb? Ho 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 PO deve contare il numero dei risultati, non i conteggi per ogni _id –

+1

Puoi dare un esempio della tua collezione e spiegare esattamente cosa vuoi contare? Non sono chiaro sull'obiettivo della tua richiesta. Inoltre, si prega di aggiungere la domanda e le istruzioni groupby alla domanda. – agarcian

risposta

6

Aggiungi un campo costante per la funzione di gruppo e poi di nuovo gruppo sul campo costante (in modo che tutti i risultati sono raggruppati in un unico gruppo) con una somma complessiva di 1. Il primo (e solo) il risultato avrà la somma.

Es.

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