Aby uzyskać liczbę dokumentów w kolekcji, użyj db.collection.find({}).count()
.
Jednak to, co próbujesz zrobić, nie zadziała. Kiedy masz dużo równoległych dostępów do bazy danych, możliwe jest, że wiele wątków zrobi to w tym samym czasie, otrzyma tę samą liczbę i wstawi dokument o tym samym identyfikatorze. Zgodnie z twierdzeniem CAP , rozproszona baza danych, taka jak MongoDB, nie może zapewnić takiej spójności.
Zamiast tego powinieneś polegać na MongoDB ObjectId
jako unikalne identyfikatory dokumentów. MongoDB generuje je automatycznie dla każdego dokumentu, jeśli nie podasz własnej wartości dla _id
. Identyfikatory ObjectId są globalnie unikalne (wystarczająco unikatowe dla jakichkolwiek praktycznych celów), więc nie dostaniesz żadnych kolizji. Zaczynają się również od sygnatury czasowej, więc gdy zamawiasz według _id
otrzymujesz mniej więcej porządek chronologiczny (jak wcześniej wspomniano, ścisły porządek chronologiczny jest niemożliwy do zapewnienia przez system rozproszony).
Zasadniczo zawsze, gdy użyjesz AUTO_INCREMENT
w SQL prawdopodobnie użyjesz ObjectId w MongodDB.