sql >> Database >  >> NoSQL >> MongoDB

Hoe tel je het aantal documenten in een MongoDB-verzameling binnen Node?

Gebruik db.collection.find({}).count() om het aantal documenten in een verzameling te krijgen. .

Wat u probeert te doen, zal echter niet werken. Wanneer je veel parallelle toegangen hebt tot de database, dan is het mogelijk dat meerdere threads dit tegelijkertijd doen, dezelfde telling ontvangen en dus een document met hetzelfde id invoegen. Volgens de CAP-stelling , een gedistribueerde database zoals MongoDB kan dit soort consistentie niet bieden.

Wat u in plaats daarvan moet doen, is vertrouwen op MongoDB ObjectId 's als unieke identificatiegegevens voor documenten. MongoDB genereert deze automatisch voor elk document wanneer u geen eigen waarde opgeeft voor _id . ObjectId's zijn wereldwijd uniek (uniek genoeg voor elk praktisch doel), dus je zult geen botsingen krijgen. Ze beginnen ook met een tijdstempel, dus als je bestelt via _id je krijgt een ruwweg chronologische volgorde (zoals eerder vermeld, een strikte chronologische volgorde is onmogelijk door een gedistribueerd systeem).

Als vuistregel geldt dat wanneer u AUTO_INCREMENT . zou gebruiken in SQL zou je waarschijnlijk ObjectId's in MongodDB gebruiken.




  1. Hoe kan ik mongo mapper het config/mongo.yml-bestand in Rails 4 laten genereren?

  2. MongoDb-zoekprestaties

  3. php mongodb zoeken en sorteren in volledige tekst

  4. MongoDB-voorvoegsel-jokerteken:fulltext-search ($ tekst) deel vinden met zoekstring