Я загрузил коллекцию, состоящую из 24 895 212 элементов в MongoDB. У меня есть осколки с 5 осколками. Данные равномерно распределены по 5 осколкам. Балансер не работает в настоящее время (sh.isBalancerRunning() возвращает false).MongoDB count() несоответствие на скошенном кластере
На основании документации, после завершения балансировки, я должен запустить команду db.collection.count(), чтобы получить количество строк. Однако, если я это сделаю, я получаю 25 245 767 строк. Не знаю, откуда взялись дополнительные 350 555 строк. Обратите внимание, что если я запускаю команду:
mongos> db.collection.find({}).itcount()
Я получаю правильный подсчет 24,895,212, но проблема в том, что эта команда работает в течение примерно 15 минут ...
Любые идеи о том, где я неправильно, почему у меня есть версия 350 555 строк? Я также попытался запустить процесс сироты очистки, выполнив команду:
mongos> db.runCommand({ cleanupOrphaned: "<db>.<collection>" })
Однако этот процесс выбежал в течение 9 часов в течение ночи и не закончить утром ...
Это именно он. В соответствии с SERVER-3645, если я запускаю «db.collection.find ({}). Explain(). N« Я получаю правильный счетчик. Поэтому, надеясь, что это будет зафиксировано в 2.7. Выполнение команды cleanupOrphaned не является для меня вариантом, поскольку он работает для большого количества домашних, и мне нужно обновлять мою коллекцию чаще, чем это ... – user3892260