0

次のような辞書オブジェクトを含むmongodbコレクションがあるとします。

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

データベース内の各辞書オブジェクトを更新したいのですvalue2 = value1 / 2が、簡単な方法はありますか?

value1値を参照できないため、簡単な方法は機能しないようです。

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

もう 1 つの方法は、バッチ ジョブを実行し、自分のコンピューターでバッチごとにデータを取得して、 の値を取得し、 の値を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 に答える