sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan tæller du mængden af ​​dokumenter i en MongoDB-samling i Node?

For at få antallet af dokumenter i en samling, brug db.collection.find({}).count() .

Men det, du prøver at gøre, vil ikke virke. Når du har mange parallelle adgange til databasen, så er det muligt, at flere tråde gør dette på samme tid, får samme antal og vil dermed indsætte et dokument med samme id. Ifølge CAP-sætningen , kan en distribueret database som MongoDB ikke give denne form for konsistens.

Hvad du bør gøre i stedet er at stole på MongoDB ObjectId 's som unikke identifikatorer for dokumenter. MongoDB genererer disse automatisk for hvert dokument, når du ikke angiver en egen værdi for _id . ObjectId'er er globalt unikke (unik nok til ethvert praktisk formål), så du vil ikke få nogen kollisioner. De begynder også med et tidsstempel, så når du bestiller efter _id du får en nogenlunde kronologisk rækkefølge (som tidligere nævnt, en streng kronologisk rækkefølge er umulig at give af et distribueret system).

Som en tommelfingerregel, når du vil bruge AUTO_INCREMENT i SQL, ville du sandsynligvis bruge ObjectId'er i MongodDB.




  1. MongoDB:kan ikke bruge en markør til at iterere gennem alle data

  2. Sammenkædningsfejl ved opbygning af c++-projekt ved hjælp af mongo-cxx-driver

  3. Mongo Query for at hente dokumenter på grundlag af samme feltværdi og dem, der ikke er udløbet

  4. Hvordan mongodumpes fra OpenShift og mongorestore lokalt på MongoDB 2.4.9?