2012-03-20 2 views
1

コレクションを照会していますが、結果を更新したいと思います。効率的にカーソルのリストを更新し、Casbahのコレクションに挿入

フィールドを更新し、残りのフィールドを変更しないとします。

私は私がやっている。この場合、キー

として「ファイル名」と「PROJECTID」のエントリがあります。

val olderFiles = conn.find(query ++ ("filename" -> filename) ++ ("projectId" -> file.projectId)) 
val updatedFiles = olderFiles.map{cursor => 
      cursor.put("newField",field) 
      cursor 
      } 

updatedFiles.foreach(conn += _) 

をしかし、これは遅いです。 オブジェクトのリストをより効率的に更新するにはどうすればよいですか?

ありがとうございました!

答えて

1

これは私が探していたものです。

conn.update(query ++ ("filename" -> filename) ++ ("projectId" -> projectId),$set ("field" -> field),false,true) 

これは、そのクエリによって発見されたすべてのエントリを更新します。

PS:(。.e.gこの場合のファイル名に)、代わりにNクエリをこれらのフィールドでのforeachを使用して作成するのフィールドのリストがある場合には、将来referenceについては、一つは、これを行うことができます。

"filename" $in Array(fieldList:_*) 
関連する問題