簡體   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