1

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

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

我有“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 += _)

然而,这很慢。如何以更有效的方式更新对象列表?

谢谢!

4

1 回答 1

1

这就是我一直在寻找的:

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

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

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

"filename" $in Array(fieldList:_*)
于 2012-03-20T19:50:11.630 回答