我有一个很大的JSON文件,我使用MongoPy来解析它。我想选择一些字段并将它们保存在新的JSON文件中。一些字段名称各不相同例如,在下面的JSON示例中,我想选择" Detials"为所有" id" s:
item = { "act": {
"id1":[ {"Detials": {...}
"Values": {...}
},
{"Detials": {...}
"Values": {...}
},
]
"id2":[ {"Detials": {...}
"Values": {...}
},
{"Detials": {...}
"Values": {...}
},
]
}
};
答案 0 :(得分:1)
不,很难使用MongoDB查询具有不同名称的字段。
如果您稍微调整一下数据,转而行动"到一个子文档数组,然后你可以把" id1"每个子文档中的标记 - 这将使查询所有" Detials"更容易。例如,像这样:
{
"act": [
{
"id" : 1,
"data" : [
{
"Detials": {...},
"Values": {...}
},
{
"Detials": {...},
"Values": {...}
}
]
},
{
"id" : 2,
"data" : [
{
"Detials": {...},
"Values": {...}
},
{
"Detials": {...},
"Values": {...}
}
]
}
]
}
如果您的数据属于此结构,则可以非常轻松地进行查询:
db.collection.aggregate([
{$unwind: {"$act"}},
{$group: {_id: "allTheDetails", "Detials" : {$push: "$act.data.Detials"}}}
])
这将返回每个" Detials"块。