从Mongodb中检索匹配的数据

时间:2018-03-08 07:09:36

标签: mongodb mongodb-query

这是我的收集数据。

[com.apple.developer.in-app-payments]/Merchant IDs

我需要 { "_id" : ObjectId("5aa0cc8a53e19d84f80842e1"), "states" : [ { "id" : "1", "name" : "Andaman and Nicobar Islands", "country_id" : "101" }, { "id" : "2", "name" : "Andhra Pradesh", "country_id" : "102" }, { "id" : "3", "name" : "Arunachal Pradesh", "country_id" : "101" } ] } 匹配的数据

如果国家/地区为country_id,我需要获取第一个数据。

我试过了:

101

这不适合我。

建议我如何获得

2 个答案:

答案 0 :(得分:0)

在投影中使用$elemMatch,它将为您提供嵌套数组中的第一个匹配元素

db.states.find( { _id: ObjectId("5aa0cc8a53e19d84f80842e1") },
             { states: { $elemMatch: { country_id: "101" } } } )

要获得多个值,您可以使用$filter

db.states.aggregate([
{
    $project: {
        states: {
            $filter: {
               input: "$states",
               as: "state",
               cond: { $eq: [ "$$state.country_id", "101" ] }
            }
        }
    }
}
])

答案 1 :(得分:0)

根据上述问题的描述,请尝试在MongoDB shell中执行以下MongoDB查询。

 db.states.find({
    states: {
        $elemMatch: {
            country_id: "101"
        }
    }
}, {
    'states.$': 1
})