【发布时间】:2012-11-22 13:02:15
【问题描述】:
我有一个这种形式的 mongodb 集合:
{id=ObjectId(....),key={dictionary of values}}
where dictionary of values is {'a':'1','b':'2'.....}
让值字典为'd'。
我需要更新'd' 中键的值。
即我想将'a':'1' 更改为'a':'2'
我如何在 pymongo 中做到这一点?
代码如下:
productData is a collection in mongoDB
for p in productData.find():
for k,v in p.iteritems():
value=v['a']
value=value+1
v['a']=value
现在在 productData 中反映新值。
这是我尝试过的,它引入了一个新的键值对而不是更新
for p in productData.find():
for k,v in p.iteritems():
value=v['a']
value=value+1
v['a']=value
productData.update({'_id':mongoId},{"$set":{'d.a':'100'}},upsert=False)
【问题讨论】:
-
更新现有字段是否同样适用?
-
可以肯定,是的。试试看会发生什么。
-
对于一个您应该执行“for k,v in p['d'].iteritems()”的人 - 此外,Mark 在下面的回答确实可以在不创建新的键/值对的情况下工作。您应该发布更多代码,以便我们看到您做错了什么。