有效地更新光标列表并插入Casbah中的集合

时间:2012-03-20 18:41:08

标签: scala mongodb casbah

我正在查询集合,我想更新结果。

我想更新一个字段,让剩余的字段保持不变。

我有“filename”和“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 个答案:

答案 0 :(得分:1)

这就是我想要的:

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

这会更新该查询找到的每个条目。

PS:对于将来的reference,如果有一个字段列表(在这种情况下为.eg文件名),而不是在这些字段中使用foreach并创建N个查询,可以这样做:

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