MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie zählt man die Anzahl der Dokumente in einer MongoDB-Sammlung innerhalb von Node?

Um die Anzahl der Dokumente in einer Sammlung zu erhalten, verwenden Sie db.collection.find({}).count() .

Das, was Sie versuchen, wird jedoch nicht funktionieren. Wenn Sie viele parallele Zugriffe auf die Datenbank haben, dann ist es möglich, dass mehrere Threads dies gleichzeitig tun, die gleiche Anzahl erhalten und somit ein Dokument mit der gleichen ID einfügen. Gemäß dem CAP-Theorem , kann eine verteilte Datenbank wie MongoDB diese Art von Konsistenz nicht bieten.

Stattdessen sollten Sie sich auf MongoDB ObjectId verlassen 's als eindeutige Kennungen für Dokumente. MongoDB generiert diese automatisch für jedes Dokument, wenn Sie keinen eigenen Wert für _id angeben . ObjectIds sind global eindeutig (eindeutig genug für jeden praktischen Zweck), sodass Sie keine Kollisionen erhalten. Sie beginnen auch mit einem Zeitstempel, also bei der Bestellung nach _id Sie erhalten eine ungefähr chronologische Reihenfolge (wie bereits erwähnt, eine strenge Eine chronologische Reihenfolge kann von einem verteilten System nicht bereitgestellt werden).

Als Faustregel gilt, wann immer Sie AUTO_INCREMENT verwenden würden in SQL würden Sie wahrscheinlich ObjectIds in MongodDB verwenden.