У меня есть коллекции, как следующее: -
{
_id: 5,
"org_name": "abc",
"items": [
{
"item_id": "10",
"data": [
// Values goes here
]
},
{
"item_id": "11",
"data": [
// Values goes here
]
}
]
},
// Another sub document
{
_id: 6,
"org_name": "sony",
"items": [
{
"item_id": "10",
"data": [
// Values goes here
]
},
{
"item_id": "11",
"data": [
// Values goes here
]
}
]
}
Каждый суб документ соответствует отдельным организациям и каждая организация имеет array
из items
в них.
Мне нужно получить отдельные элементы из массива items
, предоставив item_id
.
Я уже пробовал это: -
db.organizations.find({"_id": 5}, {items: {$elemMatch: {"item_id": {$in: ["10", "11"]}}}})
Но это либо возвращение списка элементов с * ITEM_ID * "10" OR
списка элементов с * ITEM_ID * "11".
Что мне нужно, это - это значения для элементов item_id 10 и 11 для организации «abc». Пожалуйста помоги.
Спасибо за ответ Роман. Но мне нужно не выбирать * все * 'элементы'. Извините, если я не был ясен, но мне нужно указать 'item_id' элементов, из которых мне нужны данные. – Sparky
@Sparky ok, см. Обновленный, мы увидим, понял ли я вас сейчас :). Вы должны указать 'items' в первом параметре' find'. –
Я думаю, вы понимаете, что мне нужно сейчас, но обновленный запрос также дает мне все элементы в данной организации (_id: 5) :( – Sparky