根据文件mongodb pymongo中的项目进行更新

时间:2013-08-07 08:11:07

标签: python mongodb pymongo database

假设我有一个mongodb集合,其字典对象如下:

{
    'value1' : 4 , 
    'value2' : 0  
}

我希望更新数据库中的每个字典对象,以便value2 = value1 / 2,有一种简单的方法吗?

简单的方法似乎不起作用,因为你无法引用value1值:

some_db.update(  {} , { 'value2' : 'this.value1'/2 } ) # wont work, right? 

另一种方法是执行批处理作业,在我自己的计算机上逐批提取数据,这样我就可以检索a的值,然后更新b的值。我宁愿让服务器执行此操作。

2 个答案:

答案 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}})