[英]pymongo update/insert a dict in a document
如果此文檔不存在,我想在文檔中插入dict作為字段值(例如v
);
db.table.update_one({'k': some_unique_key},
{'$set': {'v': {name: 'some_name'},
upsert=True)
此外,如果該文件存在,我想通過更新(同場的字典更新文檔v
),即增加一個name: value
對, v
,我不知道該怎么做。
例如原始文件是
{'k': some_key, 'v': {'name_a': 'name_a_val'}}
向v
添加一個key:value對name_b:name_b_val
{'k': some_key, 'v': {'name_a': 'name_a_val', 'name_b': 'name_b_val'}}
UPDATE
這是我想出的解決方案
if not db.table.find_one({'k': some_unique_key}):
db.table.insert_one({'k': some_unique_key, 'v': {'name_a': 'name_a_val'})
else:
v_val_dict = db.table.find_one({'k': some_unique_key})['v']
vat_cache.update_one({'k': some_unique_key},
{'$set': {'v': v_val_dict.update({'name_b': 'name_b_val'})}})
我想知道是否有更好的方法可以做到這一點。
您必須使用點符號 。 這將更新名為name_a
的嵌套字段,或者如果不存在則在v
內創建它。
coll.update_one({'k': 'some_key'},
{'$set': { 'v.name_a': 'name_a_val'}}, upsert=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.