In MongoDB il count
comando di aggregazione conta il numero di documenti in una raccolta o in una vista.
Restituisce un documento che contiene il conteggio e lo stato del comando.
Esempio
Supponiamo di avere una collezione chiamata pets
con i seguenti documenti:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Possiamo utilizzare la seguente query per restituire il numero di documenti nella raccolta:
db.runCommand( { count: "pets" } )
Risultato:
{ "n" : 7, "ok" : 1 }
La documentazione di MongoDB in realtà sconsiglia di utilizzare il count
comando e i relativi metodi wrapper senza un predicato di query. Questo perché, se eseguito senza un predicato di query, restituisce risultati in base ai metadati della raccolta, il che potrebbe comportare un conteggio approssimativo.
Conta il risultato di una query
Puoi contare il risultato di una query utilizzando il seguente modulo.
Esempio:
db.runCommand( {
count: "pets",
query: { type: "Dog" }
} )
Risultato:
{ "n" : 4, "ok" : 1 }
In questo esempio, possiamo vedere che ci sono quattro cani nella collezione.
Controlliamo il conteggio di un'altra query. Questa volta scopriremo quanti animali hanno un peso maggiore di una certa quantità.
db.runCommand( { count:'pets',
query: { weight: { $gt: 10 } }
} )
Risultato:
{ "n" : 3, "ok" : 1 }
Limita il conteggio
Puoi utilizzare il limit
parametro per specificare un numero massimo di documenti da contare.
Esempio:
db.runCommand( {
count: "pets",
query: { type: "Dog" },
limit: 3
} )
Risultato:
{ "n" : 3, "ok" : 1 }
Abbiamo visto prima che in realtà ci sono 4 cani, ma in questo esempio l'abbiamo limitato a contare un massimo di 3.
Se il limite è superiore al conteggio effettivo, il risultato non sarà influenzato dal limit
argomento.
Esempio:
db.runCommand( {
count: "pets",
query: { type: "Dog" },
limit: 10
} )
Risultato:
{ "n" : 4, "ok" : 1 }
Saltare i documenti
Puoi usare il skip
parametro per saltare un numero di documenti prima del conteggio.
Esempio:
db.runCommand( {
count: "pets",
query: { type: "Dog" },
skip: 2
} )
Risultato:
{ "n" : 2, "ok" : 1 }
Deprecazione
Nota che la documentazione di MongoDB afferma quanto segue:
I driver MongoDB compatibili con le funzionalità 4.0 deprecano il rispettivo cursore e la raccolta
count()
API (che esegue ilcount
command) a favore di nuove API che corrispondono acountDocuments()
eestimatedDocumentCount()
. Per i nomi API specifici per un determinato driver, vedere la documentazione dell'API del driver.
Maggiori informazioni
Il count
comando include altri campi, come hint
, comment
, readConcern
e collation
.
Consulta la documentazione di MongoDB per ulteriori informazioni.