Кажется, что это должно быть просто, но я боролся с этим некоторое время без удачи.
Предположим, у меня есть простой документ, который выглядит следующим образом:
{
data: [
{
name: "Minnesota",
},
{
name: "Mississippi",
},
...
]
}
Если я выполню следующий запрос в моей оболочке Mon go, все будет работать так, как я ожидал:
db.collection.find({}, {data: {$elemMatch: {name: "Michigan"}}})
Возвращает:
{ "_id" : ObjectId("5e9ba60998d1ff88be83fffe"), "data" : [ { "name" : "Michigan" } ] }
Однако, используя mongoid
попытка выполнить подобный запрос возвращает каждый объект внутри массива данных. Вот один из майских запросов, которые я пробовал:
Model.where({data: {"$elemMatch": {name: "Michigan"}}}).first
Как я уже упоминал выше, этот маленький запрос возвращает все, что находится внутри массива данных, а не конкретный c объект, который я пытаюсь извлечь документа.
Любая помощь будет оценена. Я стараюсь не возвращать результаты и не обрабатывать их с помощью Ruby. Я хотел бы справиться с этим на уровне БД.
Спасибо.