我是mongodb的新手并尝试查询子元素。 假设我的收藏是这样的:
{
name: "test1",
children:[
{
name:"test2",
children:[
{
name:"test3"
},
{
name:"test4"
}
]
}
]
}
我想找到' test4'并返回这样的记录:
{
name: "test1",
children:[
{
name:"test2",
children:[
{
name:"test4"
}
]
}
]
}
我尝试过$ elementMatch,但它会返回整个reocrd,包括' test3'和' test4'。我怎样才能做到这一点?非常感谢你的帮助!
答案 0 :(得分:0)
您可以将positional projection operator $
用于您的目的。
试试这个:
db.collection_name
.find({'children.children.name' : givenName},{'children.children.$' : 1});
有关位置运算符$ (projection)
的更多信息,请浏览MongoDB $(projection) documentation
答案 1 :(得分:0)
我通过这个命令实现了这个目标:
db.product_profile_menu.aggregate([
{ $match: {
children: {$elemMatch: {children: {$elemMatch: {name: "test4"}}}}
}},
{ $unwind: "$children"},
{ $unwind: "$children.children"},
{ $match: {"children.children.name":"test4"}}]).pretty()
我不确定这是否是正确的方法,所以如果有人发现此错误,请随时在此处添加评论。