我没有代码显示,因为我不知道如何实现我想要的。从Mongodb检索一个子文档
我读过,有可能从文档中返回一个子文档,但我还没有发现如何实际做到这一点。一个用户收藏的一个人为的例子:
[
{
"_id":0,
"Name":"Person 1",
"Cupboard":[
{
"_id":0,
"Items":[
{
"_id":1,
"Name":"item 1"
},
{
"_id":2,
"Name":"item 2"
}
]
}
]
}
,
{
"_id":1,
"Name":"Person 2",
"Cupboard":[
{
"_id":0,
"Items":[
{
"_id":1,
"Name":"item 1"
},
{
"_id":2,
"Name":"item 2"
}
]
}
]
}
]
我怎么只能从橱柜返回项目,假设我知道柜子的_id?我正在使用C#驱动程序,但即使在mongo shell中执行此操作也很有用。
这不会返回只投影'Cupboard.Items'数组的文档数组吗? – sambomartin
虽然这将返回父文档减字段,所以不是技术上只返回项目,我倾向于将此标记为答案,因为我根本不明白下面答案中的$ unwind/$项目... –
@SamDelaney尝试'db.Users.aggregate({$ unwind:“$ Cupboard”},{$ unwind:“$ Cupboard.Items”},{$ project:{_id:“$ Cupboard.Items._id”,Name:“$ Cupboard .Items.Name“}})'这将展开嵌套的项目数组并投影一个匹配'Items'子文档的文档数组 – sambomartin