2012-12-15 41 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}})