У меня есть некоторые структуры данных как этотКак использовать elemMatch, чтобы соответствовать гнездовой массив
{
a: 1,
array1: [
{
b: 2
array2: [
{
// this is my target
c: 3,
d: 3
},
{
c: 4,
d: 4
}
]
},
{
b: 3
array2: [
{
c: 5,
d: 5
},
{
c: 6,
d: 6
}
]
}
]
}
Я знаю, использовать {"array1" : {"$elemMatch" : {"b" : 2} } }
, чтобы соответствовать элемент первого array1 уровня. Но я не знаю, как сопоставить элемент {c: 3, d: 3}
массива array2.
Что конкретно? Это легко неверно истолковать. Вы просто пытаетесь сопоставить свой документ с массивом '' array1.array2.c? 3'? (большой намек). Или вы ожидаете проекции только согласованных элементов? Это выглядит опасно абстрактным таким образом, что вы, вероятно, неправильно интерпретируете ответ в своих реальных данных. –
На самом деле я хочу совместить этот элемент и проецировать его. –
Как я уже сказал, * «Смысл чего?» *, Учитывая приведенное выше выражение запроса, которое я вам дал (что вам действительно нужно здесь, и ** не ** '$ elemMatch'), что вы ожидаете вернуться? Если вы ожидаете ** только ** 'c: 3' и ** not **' c: 4', то это делает ** большую ** разницу в ответе на вопрос. –