За да получите броя на документите в колекция, използвайте db.collection.find({}).count()
.
Въпреки това, това, което се опитвате да направите, няма да работи. Когато имате много паралелни достъпи до базата данни, тогава е възможно няколко нишки да направят това едновременно, да получат същия брой и по този начин да вмъкнат документ със същия идентификатор. Според CAP теоремата , разпределена база данни като MongoDB не може да осигури този вид съгласуваност.
Това, което трябва да направите вместо това, е да разчитате на MongoDB ObjectId
като уникални идентификатори за документи. MongoDB ги генерира автоматично за всеки документ, когато не предоставите собствена стойност за _id
. ObjectId са глобално уникални (достатъчно уникални за всякакви практически цели), така че няма да получите никакви сблъсъци. Те също започват с клеймо за време, така че когато поръчвате по _id
получавате приблизително хронологичен ред (както беше посочено по-рано, строг хронологичен ред е невъзможно да се осигури от разпределена система).
Като основно правило, когато използвате AUTO_INCREMENT
в SQL вероятно ще използвате ObjectId в MongodDB.