2015-04-28 89 views
0

現在坐在這一段時間。我有一個數據庫和一本字典。 DB的結構如下:mongodb python更新一個條件的子字段

{ 'label': 'Argiope', 
    'uri': 'http://dbpedia.org/resource/Argiope_(spider)', 
    'description': 'The genus Argiope includes rather large and spectacular spiders that often ...', 
    'name': 'Argiope', 
    'synonym': ["One", "Two"], 
    'classification': { 
        'family': 'Orb-weaver spider', 
        'class': 'Arachnid', 
        'phylum': 'Arthropod', 
        'order': 'Spider', 
        'kingdom': 'Animal', 
        'genus': None 
        } 
} 

現在我要做的是,通過在分類領域中的新條目更新數據庫。關鍵始終是相同的「二項式權威」和價值,我的字典的價值。但我只想更新這些數據集,其中標籤等於我的鑰匙(所以我只是更新是正確的)

我開始:

def update_db(data, db): 
for key in data: 
    db.arachnid.update({$set:{"classifaction".key:data[key]}}) 
pass 

但是,這並不工作,並仍缺少condition.Anyone知道怎麼做 ?

回答

1

如果我正確理解你的問題,你的更新應該是這個樣子:

db.arachnid.update({'label': 'binomialAuthority'}, {'$set': dict([('classification.' + key, value) for key, value in data.items()])}, multi=True) 

編輯

讀你再次提問,也許你正在尋找的是:

for key, value in data.items(): 
    db.arachnid.update({'label': key}, {'$set': {'classification.' + key: value}})