Я использую 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 в начале поля я заметил знак вопроса, похожий на нераспознанный символ.Я удалил их, перезагрузил коллекцию и теперь она работает.Интересно, почему это не показывалось ни в Компасе, ни в оболочке.