假设我有一个mongodb集合,其字典对象如下:
{
'value1' : 4 ,
'value2' : 0
}
我希望更新数据库中的每个字典对象,以便value2 = value1 / 2
,有一种简单的方法吗?
简单的方法似乎不起作用,因为你无法引用value1
值:
some_db.update( {} , { 'value2' : 'this.value1'/2 } ) # wont work, right?
另一种方法是执行批处理作业,在我自己的计算机上逐批提取数据,这样我就可以检索a
的值,然后更新b
的值。我宁愿让服务器执行此操作。
答案 0 :(得分:1)
MongoDB没有此功能。您必须在批处理作业中执行此操作。如果您这样做,我建议您在每次更新之间稍微睡一会,以便服务器也能正常执行应用程序。否则,您可能最终会读取/写入数据库。当然,如果你真的有大量(数百万)记录,这才是真正必要的。
答案 1 :(得分:-1)
嘿,只是在pymongo做这样的事情
from pymongo import MongoClient
cursor_object = MongoClient()[your_db][your_collection]
for object in cursor_object.find():
id = object['_id']
val1 = object['value1']
update = val1/2
cursor_object.update({"_id":id},{"$set":{"value2":update}})