MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как преброявате количеството документи в колекция MongoDB в рамките на Node?

За да получите броя на документите в колекция, използвайте db.collection.find({}).count() .

Въпреки това, това, което се опитвате да направите, няма да работи. Когато имате много паралелни достъпи до базата данни, тогава е възможно няколко нишки да направят това едновременно, да получат същия брой и по този начин да вмъкнат документ със същия идентификатор. Според CAP теоремата , разпределена база данни като MongoDB не може да осигури този вид съгласуваност.

Това, което трябва да направите вместо това, е да разчитате на MongoDB ObjectId като уникални идентификатори за документи. MongoDB ги генерира автоматично за всеки документ, когато не предоставите собствена стойност за _id . ObjectId са глобално уникални (достатъчно уникални за всякакви практически цели), така че няма да получите никакви сблъсъци. Те също започват с клеймо за време, така че когато поръчвате по _id получавате приблизително хронологичен ред (както беше посочено по-рано, строг хронологичен ред е невъзможно да се осигури от разпределена система).

Като основно правило, когато използвате AUTO_INCREMENT в SQL вероятно ще използвате ObjectId в MongodDB.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Сортиране по виртуално поле в mongoDB (mongoose)

  2. MongoDB Намерете производителност:единичен съставен индекс срещу два индекса с единично поле

  3. Как да хванете изключение при създаване на екземпляр на MongoClient

  4. MongoDB PHP, използващ $in с масив

  5. Как Spring Data знае кой магазин да подкрепи хранилище, ако се използват множество модули?