V MongoDB db.collection.countDocuments()
metoda vrací počet dokumentů, které odpovídají dotazu pro kolekci nebo pohled.
collection
part je název kolekce nebo pohledu, na kterém se má operace počítání provést.
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.pets.countDocuments({})
Výsledek:
7
Spočítat výsledek dotazu
Výsledek dotazu můžete spočítat předáním kritérií dotazu.
Příklad:
db.pets.countDocuments({
"type": "Dog"
})
Výsledek:
4
V tomto příkladu jsme zjistili, ž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.pets.countDocuments({
"weight": { $gt: 10 }
})
Výsledek:
3
Omezit počet
Používáte limit
parametr k určení maximálního počtu dokumentů, které se mají počítat.
Příklad:
db.pets.countDocuments( {}, { limit: 5 } )
Výsledek:
5
Předtím jsme viděli, že v této kolekci je ve skutečnosti 7 dokumentů, ale v tomto příkladu jsme ji omezili na maximálně 5.
Pokud je limit vyšší než skutečný počet, nebude výsledek limit
ovlivněn argument.
Příklad:
db.pets.countDocuments( {}, { limit: 10 } )
Výsledek:
7
Přeskočení dokumentů
Můžete počítat pomocí skip
parametr pro přeskočení řady dokumentů před počítáním.
Příklad:
db.pets.countDocuments( {}, { skip: 5 } )
Výsledek:
2
Ukončení podpory count()
ve prospěch countDocuments()
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()
Rozhraní API ve prospěch nových rozhraní API procountDocuments()
aestimatedDocumentCount()
. Konkrétní názvy API pro daný ovladač naleznete v dokumentaci ovladače.
Další informace
countDocuments()
metoda se nespoléhá na to, že metadata vrátí počet jako count()
metoda dělá. Místo toho provádí agregaci dokumentů, což vede k přesnému počtu (což nelze vždy říci pro count()
metoda).
Podle dokumentace MongoDB countDocuments()
je přesný i po nečistém vypnutí nebo v přítomnosti osiřelých dokumentů v rozbitém clusteru.
db.collection.count()
metoda také přijímá hint
parametr a maxTimeMS
parametr.
Další informace naleznete v dokumentaci MongoDB.