V MongoDB count
Příkaz agregace počítá počet dokumentů v kolekci nebo pohledu.
Vrací dokument, který obsahuje počet i stav příkazu.
Příklad
Předpokládejme, že máme sbírku nazvanou pets
s následujícími dokumenty:
{ "_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 }
Pro vrácení počtu dokumentů ve sbírce můžeme použít následující dotaz:
db.runCommand( { count: "pets" } )
Výsledek:
{ "n" : 7, "ok" : 1 }
Dokumentace MongoDB ve skutečnosti nedoporučuje používat count
příkaz a jeho metody wrapper bez predikátu dotazu. Je to proto, že při spuštění bez predikátu dotazu vrací výsledky založené na metadatech kolekce, což může vést k přibližnému počtu.
Spočítat výsledek dotazu
Výsledek dotazu můžete spočítat pomocí následujícího formuláře.
Příklad:
db.runCommand( {
count: "pets",
query: { type: "Dog" }
} )
Výsledek:
{ "n" : 4, "ok" : 1 }
V tomto příkladu můžeme vidět, že v kolekci jsou čtyři psi.
Zkontrolujeme počet dalšího dotazu. Tentokrát zjistíme, kolik mazlíčků má hmotnost větší než určité množství.
db.runCommand( { count:'pets',
query: { weight: { $gt: 10 } }
} )
Výsledek:
{ "n" : 3, "ok" : 1 }
Omezit počet
Můžete použít limit
parametr k určení maximálního počtu dokumentů, které se mají počítat.
Příklad:
db.runCommand( {
count: "pets",
query: { type: "Dog" },
limit: 3
} )
Výsledek:
{ "n" : 3, "ok" : 1 }
Předtím jsme viděli, že ve skutečnosti jsou 4 psi, ale v tomto příkladu jsme to omezili na maximálně 3.
Pokud je limit vyšší než skutečný počet, nebude výsledek limit
ovlivněn argument.
Příklad:
db.runCommand( {
count: "pets",
query: { type: "Dog" },
limit: 10
} )
Výsledek:
{ "n" : 4, "ok" : 1 }
Přeskočení dokumentů
Můžete použít skip
parametr pro přeskočení řady dokumentů před počítáním.
Příklad:
db.runCommand( {
count: "pets",
query: { type: "Dog" },
skip: 2
} )
Výsledek:
{ "n" : 2, "ok" : 1 }
Ukončení podpory
Všimněte si, že dokumentace MongoDB uvádí následující:
Ovladače MongoDB kompatibilní s funkcemi 4.0 zastarávají svůj příslušný kurzor a kolekci
count()
API (která spouštícount
command) ve prospěch nových rozhraní API, která odpovídajícountDocuments()
aestimatedDocumentCount()
. Konkrétní názvy rozhraní API pro daný ovladač naleznete v dokumentaci rozhraní API ovladače.
Další informace
count
příkaz obsahuje další pole, jako je hint
, comment
, readConcern
a collation
.
Další informace naleznete v dokumentaci MongoDB.