我有此词典列表json_data
json_data = [
{
"CODE": "018906",
"X": "29813.66349",
"Y": "28697.520760000003"
},
{
"CODE": "018907",
"X": "30041.8389",
"Y": "28602.98724"
},
{
"CODE": "018910",
"X": "31966.120789999997",
"Y": "29115.75337"
},
]
我有这个mongodb集合code_col
。当集合为空时,我想将json_data
插入到集合code_col
中。下次可能会有新的json_data
,并且如果键CODE
相同,则应更新文档而不是插入文档。
我正在使用python 3.7,pymongo,mongodb 4.2.7。
您只需要将upsert
标志设置为True
。
for j in json_data:
db.code_col.update_one({'CODE': j['CODE']},
{'$set': {'X': j['X'], 'Y': j['Y']}},
upsert=True)
更新:通过使用bulk_write
方法,我们可以稍微减少此操作的时间。
from pymongo import UpdateOne
requests = []
for j in json_data:
requests.append(UpdateOne({'CODE': j['CODE']},
{'$set': {'X': j['X'], 'Y': j['Y']}},
upsert=True))
db.code_col.bulk_write(request)