In MongoDB de db.collection.countDocuments()
methode retourneert het aantal documenten dat overeenkomt met de zoekopdracht voor een verzameling of weergave.
De collection
deel is de naam van de verzameling of weergave waarop de telbewerking moet worden uitgevoerd.
Voorbeeld
Stel dat we een verzameling hebben met de naam pets
met de volgende documenten:
{ "_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 }
We kunnen de volgende query gebruiken om het aantal documenten in de collectie te retourneren:
db.pets.countDocuments({})
Resultaat:
7
Tel het resultaat van een zoekopdracht
U kunt het resultaat van een zoekopdracht tellen door de zoekcriteria door te geven.
Voorbeeld:
db.pets.countDocuments({
"type": "Dog"
})
Resultaat:
4
In dit voorbeeld kwamen we erachter dat er vier honden in de collectie zijn.
Laten we het aantal van een andere zoekopdracht controleren. Deze keer zullen we ontdekken hoeveel huisdieren een groter gewicht hebben dan een bepaald aantal.
db.pets.countDocuments({
"weight": { $gt: 10 }
})
Resultaat:
3
Beperk het aantal
U gebruikt de limit
parameter om een maximum aantal te tellen documenten op te geven.
Voorbeeld:
db.pets.countDocuments( {}, { limit: 5 } )
Resultaat:
5
We hebben eerder gezien dat er eigenlijk 7 documenten in deze collectie zitten, maar in dit voorbeeld hebben we het beperkt tot maximaal 5.
Als de limiet hoger is dan de werkelijke telling, wordt het resultaat niet beïnvloed door de limit
argument.
Voorbeeld:
db.pets.countDocuments( {}, { limit: 10 } )
Resultaat:
7
Documenten overslaan
U kunt tellen met de skip
parameter om een aantal documenten over te slaan alvorens te tellen.
Voorbeeld:
db.pets.countDocuments( {}, { skip: 5 } )
Resultaat:
2
Beëindiging van count()
in het voordeel van countDocuments()
Merk op dat de MongoDB-documentatie het volgende vermeldt:
MongoDB-stuurprogramma's die compatibel zijn met de 4.0-functies depreciëren hun respectieve cursor en verzameling
count()
API's in het voordeel van nieuwe API's voorcountDocuments()
enestimatedDocumentCount()
. Zie de driverdocumentatie voor de specifieke API-namen voor een bepaalde driver.
Meer informatie
De countDocuments()
methode is niet afhankelijk van metadata om de telling te retourneren, zoals de count()
methode doet. In plaats daarvan voert het een aggregatie van de documenten uit, wat resulteert in een nauwkeurige telling (wat niet altijd gezegd kan worden voor de count()
methode).
Volgens de MongoDB-documentatie, countDocuments()
is nauwkeurig, zelfs na een onreine afsluiting of in de aanwezigheid van verweesde documenten in een shard-cluster.
De db.collection.count()
methode accepteert ook een hint
parameter en een maxTimeMS
parameter.
Zie de MongoDB-documentatie voor meer informatie.