sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur räknar man mängden dokument i en MongoDB-samling inom Node?

För att få antalet dokument i en samling, använd db.collection.find({}).count() .

Men det du försöker göra kommer inte att fungera. När du har många parallella åtkomster till databasen är det möjligt att flera trådar gör detta samtidigt, får samma antal och kommer därmed att infoga ett dokument med samma id. Enligt CAP-satsen , en distribuerad databas som MongoDB kan inte ge denna typ av konsistens.

Vad du istället bör göra är att lita på MongoDB ObjectId är som unika identifierare för dokument. MongoDB genererar dessa automatiskt för varje dokument när du inte anger ett eget värde för _id . ObjectId:s är globalt unika (unika nog för alla praktiska ändamål), så du kommer inte att få några kollisioner. De börjar också med en tidsstämpel, så när du beställer med _id du får en ungefär kronologisk ordning (som tidigare nämnts, en strict kronologisk ordning är omöjlig att tillhandahålla av ett distribuerat system).

Som en tumregel, närhelst du skulle använda AUTO_INCREMENT i SQL skulle du sannolikt använda ObjectIds i MongodDB.




  1. Kör JavaScript-fil i MongoDB

  2. Hur kan jag stoppa redis-servern?

  3. Optimala sammansatta index för $ existerar :sant (glesa index)

  4. MongoDB konverterar strängtyp till flyttyp