2012-12-15 81 views
1

我的文件是這樣的:pymongo語法來更新子文檔

{ 
    a: "..." 
    subdocs [ 
    { 
     l: "..." 
     m: "..." 
     n: 0 
    }, 
    { 
     l: "..." 
     m: "..." 
     n: 0 
    } 

    } 
} 

我必須使用pymongo更新特定subdoc的「N」個領域。我有文件和子文件的索引,這樣我就可以得到這樣

subdoc = mydoc['subdocs'][index] 

我試圖通過pymongo做一個更新的subdoc的

coll.update({ mydoc['subdocs'][index] : subdoc }, { "$inc": { n: 1 }}) 

我得到這個例外

<type 'exceptions.TypeError'> 

我已經嘗試了幾個變體,並且無法獲得pymongo語法。我認爲我的查詢文件不正確。 pymongo對這種語法有什麼期待?

回答

1

您需要的數組元素的第二個參數來更新標識要update使用這樣的點符號:

coll.update({'_id': mydoc['_id']}, {'$inc': {'subdocs.' + str(index) + '.n': 1}})