0

假设我有一个带有字典对象的 mongodb 集合,如下所示:

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

我想更新数据库中的每个字典对象value2 = value1 / 2,有没有一种简单的方法可以做到这一点?

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

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

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

4

2 回答 2

1

MongoDB 没有这方面的功能。您必须在批处理作业中执行此操作。如果你这样做,我建议你在每次更新之间让你睡一会儿,以允许服务器也为应用程序正常执行。否则,您最终可能会导致数据库无法读取/写入。当然,只有当您确实拥有大量(数百万条)记录时,这才是真正必要的。

于 2013-08-07T08:48:55.510 回答
-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}})
于 2013-08-07T08:24:12.200 回答