【发布时间】:2016-10-07 00:40:49
【问题描述】:
我在更新 mongo 中的嵌套 json 结构时遇到了困难。 我正在使用 pymongo 和 Mongoengine-Rest-framework。
由于这个特殊的 json 具有动态结构并且是高度嵌套的,因此我选择使用 pymongo 而不是 mongo-engine ORM。
创建、检索和删除操作运行良好。 我想对更新问题提出一些建议。
让我们考虑一个已经存在于 mongo 中的示例对象:
st1 = {
"name": "Some_name",
"details": {
"address1": {
"house_no": "731",
"street": "Some_street",
"city": "some_city"
"state": "some_state"
}
}
}
如果我尝试通过在更新命令中发送 json st2 来将 address2 添加到详细信息中来更新 st1,其中 _id 是更新的条件,
st2 = {
"details": {
"address2": {
"house_no": "5102",
"street": "Some_street",
"city": "some_city"
"state": "some_state"
}
}
}
我得到以下对象 st3 作为结果,在 mongo 中,
st3 = {
"name": "Some_name",
"details": {
"address2": {
"house_no": " 5102",
"street": "Some_street",
"city": "some_city"
"state": "some_state"
}
}
}
而不是预期的 st4 对象。
st4 = {
"name": "Some_name",
"details": {
"address1": {
"house_no": "731",
"street": "Some_street",
"city": "some_city"
"state": "some_state"
},
"address2": {
"house_no": "5102",
"street": "Some_street",
"city": "some_city"
"state": "some_state"
}
}
}
我的更新命令是:
result = collection.update_one({'_id': id}, doc)
在哪里
id: 文档的_id
文档:(此处)st2
collection: pymongo 集合对象
原始 JSON 深度为 6,键是动态的。需要在不同的深度进行更新。
【问题讨论】:
标签: python json mongodb pymongo