使用聚合提取子记录

时间:2017-06-07 09:01:34

标签: mongodb aggregation-framework

我在MongoDB中有这个文档,其结构存储在结果字段

Mongo document

[   
    {
        "id" : "131429",
        "categoryId" : "3",
        "results" : [{              
                "id" : "yAHPPvo",
                "supplierId" : 31,
                "countryId" : "91",
                "cityId" : "91",
            }, {                
                "id" : "BAYYESB",
                "supplierId" : 31,
                "countryId" : "91",
                "cityId" : "91",
            }]
    },
    {
        "id" : "22534",
        "categoryId" : "2",
        "results" : [{              
                "id" : "DerrDSQ",
                "supplierId" : 14,
                "countryId" : "91",
                "cityId" : "91",
            }, {                
                "id" : "TTerySQ",
                "supplierId" : 5,
                "countryId" : "91",
                "cityId" : "91",
            }]
    }
]

试图弄清楚如何使用“yAHPPvo”键查询和提取对象,找到第一部分找到必要的文档,但是如何在其中提取子对象呢? 我在网上看到这是通过聚合功能和展开来完成的,但似乎无法用手指对它进行操作。如果它变得更容易,我可以将它转换为数组,但是两个都没有成功。

更新

这是我迄今为止尝试过的重复链接建议:

db.getCollection('searches').aggregate([
    {$match: {'result.id': '131429'}},
    {$project: {
        result: {$filter: {
            input: '$result',
            as: 'result',
            cond: {$eq: ['$$result.id', 'yAHPPvo']}
        }},
        _id: 0
    }}
])

但返回0条记录。

0 个答案:

没有答案