In MongoDB il $count
l'operatore di aggregazione passa un documento alla fase successiva della pipeline di aggregazione che contiene un conteggio del numero di documenti immessi nella fase corrente.
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 operazione di aggregazione per contare il numero di cani nella collezione:
db.pets.aggregate([
{
$match: { type: "Dog" }
},
{
$count: "DogCount"
}
])
Risultato:
{ "DogCount" : 4 }
Il modo in cui funziona la pipeline di aggregazione è che si compone di fasi. Ciascuna fase della pipeline fornisce l'input per la fase successiva.
Pertanto, nell'esempio sopra, la prima fase ha filtrato la raccolta solo per quei documenti che avevano un type
di dog
. La seconda fase ha preso quei documenti, li ha contati e ha passato il risultato alla fase successiva. Dato che era l'ultima fase della pipeline, abbiamo visto l'output.
Conteggio dei documenti raggruppati
Ecco un esempio che combina l'operatore aggregato $group con $count per restituire un conteggio di ogni tipo di animale domestico al di sotto di un determinato peso.
db.pets.aggregate([
{
$match: { weight: { $lt: 30 } }
},
{
$group: { _id: "$type", count: { $sum: 1 } }
}
])
Risultato:
{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }
{ "_id" : "Dog", "count" : 3 }
Aggiungi una fase pipeline
In questo esempio, aggiungiamo una fase della pipeline per ordinare i risultati. In particolare, utilizziamo il $sort
operatore per farlo.
db.pets.aggregate([
{
$match: { weight: { $lt: 30 } }
},
{
$group: { _id: "$type", count: { $sum: 1 } }
},
{
$sort : { count : -1, _id: 1 }
}
])
Risultato:
{ "_id" : "Dog", "count" : 3 }
{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }
In questo caso, abbiamo ordinato il conteggio in ordine decrescente (il -1
specifica l'ordine decrescente), quindi da _id
in ordine crescente (il 1
specifica l'ordine crescente).
Maggiori informazioni
Consulta la documentazione di MongoDB per ulteriori informazioni.