Если у меня есть документ, как это:найти поддокумент по идентификатору внутри поля массива вложенного объекта
{
"_id": ObjectId("54e6774a73a7edfefdb9e2bc"),
"information":"",
"__v":0,
"goalieRoster":{
"locked":[
],
"approved":[
{
"_id": ObjectId("548d49bad972605bf2d1f55a"), // find by this
}
],
"signedUp":[
{
"_id": ObjectId("548d49bad972605bf2d1f55a"),
}
],
"maxSize":2
},
"skaterRoster":{
"locked":[
],
"approved":[
],
"signedUp":[
],
"maxSize":26
},
"date":{
"updated":"2015-02-20T02:56:42.258Z",
"skate":""
}
}
Как бы захватить весь поддокумент внутри approved
по идентификатору поддокумента в? Я думаю, что я близок, поскольку следующий запрос почти делает то, что я хочу.
db.roster.find(
{
"goalieRoster.approved._id": ObjectId("548d54e9576ddacc20f3a88e")
},
{
"goalieRoster.approved": 1
}
);
возвращает родительский документ и чем согласующий поддокументе внутри approved
массива вложенной goalieRoster
как так
{
"_id" : ObjectId("54e6774a73a7edfefdb9e2bc"),
"goalieRoster" : {
"approved" : [
{
"_id" : ObjectId("548d54e9576ddacc20f3a88e"),
}
]
}
}
Проблема в том, все, что я хочу это поддокумент внутри approved
. Кроме того, можно ли опустить goalieRoster
только approved
и просмотреть его как в утвержденном массиве в goalieRoster
, так и в skaterRoster
?
Edit: В результате я искал это
{
"_id" : ObjectId("548d54e9576ddacc20f3a88e"),
}