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.