这是我的收集数据。
[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
这不适合我。
建议我如何获得
答案 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
})