过滤MongoDB中的子文档

时间:2017-05-02 15:40:40

标签: mongodb robo3t subdocument

我们是Mongodb的新手,作为我们POC的一部分,我们将一堆文档摄入Mongo并测试不同的查询和投影选项以进行数据检索。 其中一个用例,我们试图在Mongo中过滤下面的示例文档并仅获取子文档。就像我们如何在关系数据库中获取数据一样。

示例输入。

{ 
   "_id": "59036b0fa036cc28c8e07db6",
   "sections": [{
    "srcName": "test1",
    "CompanyName": "ABC",
    "sectorCode": "P",
    "raw": false,
    "data": [{
            "srcKey": "",
            "rowIdx": 0
    },
        {
            "srcKey": "01",
            "rowIdx": 1
        }
    ]
  }]
}

**desired output**  
   {
    "_id" : ObjectId("59036b0fa036cc28c8e07db6"),
    "sections" : [ 
    {
        "srcName" : "test1",
        "CompanyName" : "ABC",
        "sectorCode" : "P",
        "raw" : false,
        "data" : [ 
            {
                "srcKey" : "01",
                "rowIdx" : 1
            }
        ]
    }
            ]
}                

我在RoboMongo中使用的Shell命令是

1/db.getCollection('InsStatData').aggregate([
                        {"$project": {
                            "sections": { 
                                "$filter": {
                                    "input": "$sections", "as": "data", "cond": { "setIsSubset": [["$$data.rowIdx"], [1]] }}}}}])

2/ db.getCollection('InsStatData').aggregate({$match: {"sections.data.rowIdx": 1} })

请建议如何输出。

0 个答案:

没有答案