如何在某些条件下让嵌套文档中的子项生成?

时间:2017-01-24 03:37:56

标签: mongodb nested-documents

我有一个集合:

{
    _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
}

每份文件都有一些孩子。每个孩子都有一个代码属性。我怎么能为这个成就做到这一点?

2 个答案:

答案 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"}}
]);