2012-03-20 57 views
1

我正在查询集合,我想更新结果。高效更新光标列表并插入Casbah中的集合

我想更新一个字段,并让其余字段不变。

我有“名”和“专案编号”作为键

在这种情况下条目我做:

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:对于未来reference,如果有域(.e.g在这种情况下的文件名),而不是在这些领域使用foreach和创建N次查询的列表,可以这样做:

"filename" $in Array(fieldList:_*)