У меня есть документ, содержащий массив. Вот так:
"_id" : ObjectId("55101f81e4b07caf8554b9b1"),
"myId" : "1222222",
"isDelayed" : false,
"status" : "BALLS",
"yellow" : false,
"white" : true,
"people" : [
{
"peopleId" : 222222,
"bc" : 0,
"status" : "live",
"fc" : 1,
"tc": 4,
"rc": "yellow"
},
{
"peopleId" : 33312,
"bc" : 0,
"status" : "live",
"fc" : 1,
"tc": 4,
"rc": "yellow"
},
...
У меня есть запрос mongo, как показано ниже, в коллекции mycoll
, если myId=1.222
, и в массиве людей, если people.peopleId=1123
он возвращает первое совпадение:
db.getCollection('mycoll').find(
{myId:'1.222',
people: { $elemMatch: { peopleId: 1123 }
}
},{"people.$": 1 }).pretty();
Результат включает все поля в записи людей из массива:
"people" : [
{
"peopleId" : 1122,
"bc" : 0,
"status" : "live",
"fc" : 1,
"tc": 4,
"rc": "yellow"
},
Как мне отфильтровать ответ о том, что он возвращает только нужное поле из записи соответствия во внутреннем массиве, например "status"
? Я могу создать фильтр для внешнего документа, но не для поля в элементе массива.