我有一个集合:
{
_id : ...
children : [
{
code:0
},
{
code:1
},
{
code:2
}
]
},
{
_id : ...
children : [
{
code:3
},
{
code:4
},
{
code:5
}
]
},
{
_id : ...
children : [
{
code:6
},
{
code:7
},
{
code:8
}
]
}
在这个系列中,我想给孩子们一些代码。
例如,如果我想要孩子编码1,4,6,我需要的结果是:
{
code:1
},
{
code:4
},
{
code:6
}
每份文件都有一些孩子。每个孩子都有一个代码属性。我怎么能为这个成就做到这一点?
答案 0 :(得分:0)
查询总是返回一个文档,因此您可能无法获得所需的非常具体的结果,您可以通过子代码进行搜索,但最终结果将是带有子属性的文档集合。
然而,这可以通过聚合来实现
db.test.aggregate([{$unwind : "$children"},{$match : {$or:[{'children.code':1},
{'children.code':4},{'children.code':6}]}},{$project : {_id:0, code : "$children.code"}}]);
不确定语法,但基本想法保持不变。
答案 1 :(得分:0)
可以尝试吗
db.CollectionName.aggregate([
{$unwind : "$children"},
{$match : {"children.code": {$in :[1,4,6]}}},
{$project : {_id:0, code : "$children.code"}}
]);