MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come si conta la quantità di documenti in una raccolta MongoDB all'interno di Node?

Per ottenere il numero di documenti in una raccolta, usa db.collection.find({}).count() .

Tuttavia, ciò che stai cercando di fare non funzionerà. Quando si hanno molti accessi paralleli al database, è possibile che più thread lo facciano contemporaneamente, ricevano lo stesso conteggio e quindi inseriscano un documento con lo stesso ID. Secondo il teorema CAP , un database distribuito come MongoDB non può fornire questo tipo di coerenza.

Quello che dovresti fare invece è affidarti a MongoDB ObjectId come identificatori univoci per i documenti. MongoDB li genera automaticamente per ogni documento quando non fornisci un valore per _id . Gli ObjectId sono globalmente unici (abbastanza unici per qualsiasi scopo pratico), quindi non otterrai alcuna collisione. Iniziano anche con un timestamp, quindi quando ordini con _id ottieni un ordine più o meno cronologico (come affermato in precedenza, un rigoroso l'ordine cronologico è impossibile da fornire da un sistema distribuito).

Come regola pratica, ogni volta che useresti AUTO_INCREMENT in SQL, probabilmente utilizzeresti ObjectId in MongodDB.