Несоответствующие результаты возвращаются запросом mongodb find - PullRequest
2 голосов
/ 17 августа 2011

Я выполнил следующий запрос для коллекции в моей базе данных mongodb.

db.coll.find({field_name:{$exists:true}}).count() и вернул 2437185. Общее количество записей, сообщенных db.coll.find({}).count(), составляет 2437228.

Теперь, когда я запускаю запрос db.coll.find({field_name:{$exists:false}}).count(), вместо возврата 43 он возвращает 0.

У меня есть два вопроса:

  1. Означает ли приведенный выше сценарий, что данные в моей коллекции повреждены?

  2. Ранее я уже писал об этом вопросе по адресу ( Обновление записей в MongoDB с помощью pymongo приводит к удалению большинства из них ). Ответивший сказал, что обновление данных в mongo db может исключить данные, но не удалить их. Что это значит?

Спасибо

1 Ответ

5 голосов
/ 17 августа 2011

Я полагаю, что вы столкнулись с проблемой, о которой было сообщено в SERVER-1587 .Какую версию MongoDB вы используете?Если оно меньше 1.9.0, вы можете использовать следующее в качестве обходного пути:

db.coll.find({field_name: {$not: {$exists: true}}}).count()

Что касается другого вопроса, в этом случае «отключение» означает, что обновление может изменить значениеили сбросить любое или все поля в документе, но не может удалить сам документ.Единственный способ удалить документ с помощью remove()

...