sql >> Databáze >  >> NoSQL >> MongoDB

Jak spočítáte množství dokumentů v kolekci MongoDB v rámci Node?

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.




  1. Mongoose:Rekurzivní vložený dokument v Coffeescriptu

  2. Jaký je nejlepší způsob, jak se vypořádat s kompozitními klíči, když používáte Salat s MongoDB?

  3. Získejte pouze poslední prvek pole mongoose

  4. MongoDB řazení