Я считаю, что ваша коллекция оштукатурена.
Большинство решений с оштукатуренными базами данных имеют такое несоответствие из-за того, что некоторые команды рассматривают всю коллекцию, то есть все документы всех осколков, в то время как некоторые другие команды рассматривают только документы осколка, к которым он подключен.
Это то, что нужно всегда иметь в виду. Это в основном относится к командам, которые:
- Количество
- возвращают документ, имеющий наименьшее значение для данного поля
- возвратного документ, имеющий наибольшее значение для данного поля
- ...
Найдено на Монго docs:
count() эквивалентен конструкту db.collection.find (query) .count() . ... Sharded Кластеры
На sharded кластера, db.collection.count() может привести к неточным подсчета, если осиротевшие документы существуют, или если кусок миграция находится в стадии разработки. ...
Таким образом, в случае Монго, это просто потому, что Монго всегда работает в фоновом процессе, некоторые перебалансированию документов внутри осколка, чтобы сохранить распределение Осколки совместимый с политикой шардинга определенных в коллекции.
Имейте в виду, что для обеспечения наилучшей производительности большинство оштукатуренных решений будут записывать документы на осколке, к которому подключен клиент, а затем позже поставить его там, где он действительно должен быть.
Именно поэтому nosql DBs часто помечены как в конечном итоге последовательным.