Поиск элементов в массиве и возврат соответствующих элементов в mongodb

У меня есть следующий документ

db.c.save({a:[{u:3},{u:6},{u:123}]});

Я хочу получить соответствующие элементы из массива. Поэтому я использую следующий запрос, чтобы сделать это.

db.c.find({'a.u':{$in:[3,123]}},{'a.

Это дает мне{ "a" : [ { "u" : 3 } ] } но я думаю, это должно вернуться{ "a" : [ { "u" : 3 }, { "u" : 123 } ] }

Какие-либо предложения?

:1});

Это дает мне{ "a" : [ { "u" : 3 } ] } но я думаю, это должно вернуться{ "a" : [ { "u" : 3 }, { "u" : 123 } ] }

Какие-либо предложения?

Ответы на вопрос(1)

Решение Вопроса

$ позиционный оператор возвращает только первое совпадение, чтобы вы моглииспользовать его, чтобы делать то, что вы пытаетесь сделать.

Тем не менее, вы можете использовать либоагрегирование или жеуменьшение карты, Следующий код делает то, что вы хотите, используя структуру агрегации:

db.c.aggregate([
  { $unwind : "$a"},
  { $match  : { "a.u" : {$in :[3,123]} } },
  { $group  : {_id : "$_id",a : { $push : "$a" } } }
])

Ваш ответ на вопрос