{
"_id": "1",
"Continent": "Asia",
"Countries": {
"South Korea": {
"GDP": 80,
"HGI": 60,
"FX": 10
},
"India": {
"GDP": 75,
"HGI": 112,
"FX": 28
},
"Singapore": {
"GDP": 34,
"HGI": 60,
"FX": 0
}
}
}
我有上面的JSON。需要访问GDP和HGI字段。但是国家名称随大陆而异。如何创建一个可以访问GDP和HGI的查询?是否有可能在对象内引用键的位置? 我不能将其转换为数组。只需要从这种格式中提取数据。
谢谢!!!!
答案 0 :(得分:1)
您可以使用$objectToArray
运算符
查询如下:
db.collection.aggregate([
{
"$project": {
"countries": {
"$objectToArray": "$Countries"
}
}
},
{
"$project": {
"countries.v.GDP": 1
}
}
])
结果:
[
{
"_id": "1",
"countries": [
{
"v": {
"GDP": 80
}
},
{
"v": {
"GDP": 75
}
},
{
"v": {
"GDP": 34
}
}
]
}
]
您可以在这里尝试:mongoplayground.net/p/1ODRczeV-0S
答案 1 :(得分:0)
一旦您获得了一个大洲的所有国家/地区,就可以使用一个小技巧即处理数据了。
{
"_id": "1",
"Continent": "Asia",
"Countries": {
"South Korea": {
"GDP": 80,
"HGI": 60,
"FX": 10
},
"India": {
"GDP": 75,
"HGI": 112,
"FX": 28
},
"Singapore": {
"GDP": 34,
"HGI": 60,
"FX": 0
}
}
}
从上面您可以轻松获得国家。现在,
Object.keys(data.Countries);
这将返回数组中的所有国家/地区,例如[“韩国”,“印度”,“新加坡”]。现在,您可以通过访问这些键轻松访问所有特定于国家/地区的数据。