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.