如何在某些条件下在嵌套文档中获取 children?
How can I get children in nested documents with some conditions?
我有一个 collection :
{
_id : ...
children : [
{
code:0
},
{
code:1
},
{
code:2
}
]
},
{
_id : ...
children : [
{
code:3
},
{
code:4
},
{
code:5
}
]
},
{
_id : ...
children : [
{
code:6
},
{
code:7
},
{
code:8
}
]
}
在这个 collection 中,我想要 children 宽度一些代码。
比如我要children编码为1、4、6,我需要的结果是:
{
code:1
},
{
code:4
},
{
code:6
}
每个文档都有一些 children。每个 child 都有一个属性 code。我该怎么做才能获得这个成就?
查询总是returns一个文档,所以你可能得不到你需要的非常具体的结果,你可以通过子代码搜索,但最终结果将是一个带有子属性的文档集合。
然而这可以通过聚合来实现
db.test.aggregate([{$unwind : "$children"},{$match : {$or:[{'children.code':1},
{'children.code':4},{'children.code':6}]}},{$project : {_id:0, code : "$children.code"}}]);
不确定语法,但基本思想保持不变。
可以试试
db.CollectionName.aggregate([
{$unwind : "$children"},
{$match : {"children.code": {$in :[1,4,6]}}},
{$project : {_id:0, code : "$children.code"}}
]);
我有一个 collection :
{
_id : ...
children : [
{
code:0
},
{
code:1
},
{
code:2
}
]
},
{
_id : ...
children : [
{
code:3
},
{
code:4
},
{
code:5
}
]
},
{
_id : ...
children : [
{
code:6
},
{
code:7
},
{
code:8
}
]
}
在这个 collection 中,我想要 children 宽度一些代码。
比如我要children编码为1、4、6,我需要的结果是:
{
code:1
},
{
code:4
},
{
code:6
}
每个文档都有一些 children。每个 child 都有一个属性 code。我该怎么做才能获得这个成就?
查询总是returns一个文档,所以你可能得不到你需要的非常具体的结果,你可以通过子代码搜索,但最终结果将是一个带有子属性的文档集合。
然而这可以通过聚合来实现
db.test.aggregate([{$unwind : "$children"},{$match : {$or:[{'children.code':1},
{'children.code':4},{'children.code':6}]}},{$project : {_id:0, code : "$children.code"}}]);
不确定语法,但基本思想保持不变。
可以试试
db.CollectionName.aggregate([
{$unwind : "$children"},
{$match : {"children.code": {$in :[1,4,6]}}},
{$project : {_id:0, code : "$children.code"}}
]);