繁体   English   中英

pymongo更新/在文档中插入字典

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM