MongoDB Query - фильтр работает только с _id - PullRequest
0 голосов
/ 27 октября 2018

Я использую mongodb v4.0.3, и это происходит как с оболочкой, так и с компасом.

Это происходит только с определенной коллекцией.Ранее у него были переопределенные идентификаторы (вместо идентификатора mongodb по умолчанию была строка. Я удалил коллекцию и воссоздал ее без этого).

У меня есть, например, следующая структура («mystructure»):

{  
   "_id":ObjectId("5bd44eb528d61e3374b5e6ea"),
   "custom_field":"data",
}

Когда я запрашиваю его без фильтра, он возвращает все документы:

db.mystructure.find({});

Когда я ищу его объект, он возвращается правильно

db.mystructure.find( {"_id": ObjectId("5bd44eb528d61e3374b5e6ea")} );

Но когда я пытаюсь отфильтровать любое поле, оно ничего не возвращает

db.mystructure.find( {"custom_field": "data"} );

Сначала я подумал, что будет решено воссоздать коллекцию с автоматически сгенерированными идентификаторами из mongodb, но проблема остается.В строке нет «скрытых» пробелов или чего-то подобного.Тот же запрос в компасе тоже не работает.Другие коллекции работают.Он находится на той же базе данных с тем же пользователем.

Почему это может быть?

Большое спасибо.

ОТВЕТ:

После экспорта всей коллекции через Compass в формате JSON и открытия с помощью VSCODE в начале поля я заметил знак вопроса, похожий на нераспознанный символ.Я удалил их, перезагрузил коллекцию и теперь она работает.Интересно, почему это не показывалось ни в Компасе, ни в оболочке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...