MongoDB возвращает неправильный ответ, используя простой поиск - PullRequest
0 голосов
/ 30 мая 2019

Я знаю, что это может звучать очень странно, но, пожалуйста, прочитайте весь случай.

У меня MongoDB версии 3.2.5, которая работает более года, сегодня я запустил простой запрос к коллекции:

db.collection_name.find({chkst:0},{chkst:1});

Насколько мне известно, ответом должен был быть документ с полем chkst, равным 0 и _id с ObjectID документа.Тем не менее, ответ был:

{ 
  "_id" : ObjectId("5fe7f8c08cdc06066edb5258"), 
  "chkst" : NumberInt(1)
}

Обратите внимание на значение chkst?Я знаю, что это невозможно.Вот картинка из Studio3T, потому что раньше я чувствовал, что у RoboMongo может быть какая-то проблема!

MongoDB Find incorrect results

Как я уже сказал, это странный случай, и я мог быне первым, кто столкнется с этим, но я столкнулся с такой проблемой впервые за 4 года с MongoDB!

Еще один момент, который я хотел бы добавить, Агрегирование в той же коллекции вв то же время дает правильные результаты.

db.collection_name.aggregate([
  {"$group": {"_id": "$chkst", "count": {"$sum": 1}}}
]);

Это дало ожидаемый результат!Как и в случае НЕТ проблем с агрегацией, но поиск приводит к неожиданным результатам.

Любая помощь или объяснение было бы здорово!


Обновление

После небольшого сеанса быстрого мышленияЯ заметил, что поле было проиндексировано!Поэтому я просто удалил индекс и добавил его снова.

ВОЙЛА!Проблема решена! .Может быть, update.writeErrors.index выдал ошибку во время обновления или напишите об этом поле, и это не было обработано!Есть ли способ контролировать сбой записи индекса?У меня MongoDB Ops Manager, развернутый для управления 4-мя сегментированными кластерами, хотя этот автономный.Я не могу выдвинуть это как ответ, пока я не уверен на 100%, что это - причина.

...