【问题标题】:How can I get children in nested documents with some conditions?在某些条件下,如何在嵌套文档中获取孩子?
【发布时间】:2017-01-24 13:24:32
【问题描述】:

我有一个收藏:

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

每个文档都有一些孩子。每个孩子都有一个属性code。我怎样才能为这个成就做到这一点?

【问题讨论】:

    标签: mongodb nested-documents


    【解决方案1】:

    可以试试

    db.CollectionName.aggregate([
      {$unwind : "$children"},
      {$match : {"children.code": {$in :[1,4,6]}}},
      {$project : {_id:0, code : "$children.code"}}
    ]);
    

    【讨论】:

      【解决方案2】:

      查询总是返回一个文档,因此您可能无法得到您需要的非常具体的结果,您可以通过子代码进行搜索,但最终结果将是具有 children 属性的文档集合。

      但是这可以通过聚合来实现

      db.test.aggregate([{$unwind : "$children"},{$match : {$or:[{'children.code':1},
      {'children.code':4},{'children.code':6}]}},{$project : {_id:0, code : "$children.code"}}]);
      

      不确定语法,但基本思想保持不变。

      【讨论】:

      • $match末尾添加一个结束}
      猜你喜欢
      • 2015-09-07
      • 2018-11-28
      • 2020-07-21
      • 2014-06-17
      • 1970-01-01
      • 2018-11-30
      • 2017-05-01
      • 1970-01-01
      • 2020-06-13
      相关资源
      最近更新 更多