Chcete-li získat počet dokumentů v kolekci, použijte db.collection.find({}).count()
.
To, o co se snažíte, však nebude fungovat. Když máte hodně paralelních přístupů k databázi, je možné, že to udělá více vláken současně, obdrží stejný počet a vloží tak dokument se stejným ID. Podle teorému CAP Distribuovaná databáze jako MongoDB nemůže zajistit tento druh konzistence.
Co byste měli udělat, je spolehnout se na MongoDB ObjectId
's jako jedinečné identifikátory dokumentů. MongoDB je generuje automaticky pro každý dokument, pokud nezadáte vlastní hodnotu pro _id
. ObjectId jsou globálně jedinečné (dostatečně jedinečné pro jakýkoli praktický účel), takže nedochází k žádným kolizím. Také začínají časovým razítkem, takže když objednáváte podle _id
získáte zhruba chronologické pořadí (jak již bylo uvedeno, přísné chronologické pořadí není možné zajistit distribuovaným systémem).
Obecně platí, že kdykoli byste použili AUTO_INCREMENT
v SQL byste pravděpodobně použili ObjectId v MongodDB.