[英]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.