У меня есть следующий документ в коллекции:MongoDB - Возвращение только соответствующий массив из Object
{
"_id" : 101,
"students" : [
{
"name" : "john",
"age" : 10,
"city":'CA'
},
{
"name" : "danial",
"age" : 15,
"city":'KA'
}
]
}
{
"_id" : 102,
"students" : [
{
"name" : "adam",
"age" : 20,
"city":'NY'
},
{
"name" : "johnson",
"age" : 12,
"city":'CA'
}
]
}
И я огонь следующий запрос:
db.data.find({'students.city':'CA'})
Это возвращает меня «студентов» объекты из обоих документы, так как один экземпляр соответствует фильтру («город», «CA») в обоих.
Однако, я хочу получить только соответствующий массив. То есть, я хочу получить следующий результат:
{
"_id" : 101,
"students" : [
{
"name" : "john",
"age" : 10,
"city":'CA'
}
]
}
{
"_id" : 102,
"students" : [
{
"name" : "johnson",
"age" : 12,
"city":'CA'
}
]
}
Пожалуйста, помогите.
Нет, это просто неправильно. См. [Мой ответ] (http://stackoverflow.com/a/35408883/1296707). –
yep. Ты прав. после подтверждения снова. это лучше. Поправьте меня, если я ошибаюсь: Я сказал, чтобы использовать агрегат, потому что я думал, что вы не можете вернуть несколько элементов массива, соответствующих вашим критериям, используя операцию find(). но так как это разные документы и только один соответствующий элемент на документ. Ваш путь правильный. –
Я не проверял, но думаю, что можно было бы использовать «$ или» в проекции ... –