在 ReactiveMongo 0.18.8 中,如何在单个命令中执行具有不同值的多个文档的更新?
In ReactiveMongo 0.18.8, how can I perform an update of several documents, with different values, in a single command?
我在挖掘 SO 时发现 this answer。
基本上,这正是我需要的。但是,在我当前的 ReactiveMongo 版本(0.18.8)中,db.command(RawCommand(commandDoc))
似乎不再可能。 DB下没有“命令”。我似乎无法找到此命令移动的位置。
谁能帮帮我?或者告诉我我还能如何实现我需要的东西?
我正在尝试在单个数据库命令中对多个具有不同值的文档执行多个更新。
谢谢!
在 documentation 中,您可以看到插入、更新或删除的批量操作示例。
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
import reactivemongo.api.bson.BSONDocument
import reactivemongo.api.bson.collection.BSONCollection
def updateWithBulk(personColl: BSONCollection) = {
// Bulk update: multiple update
val updateBuilder1 = personColl.update(ordered = true)
val updates = Future.sequence(Seq(
updateBuilder1.element(
q = BSONDocument("firstName" -> "Jane", "lastName" -> "Doh"),
u = BSONDocument("age" -> 18),
upsert = true,
multi = false),
updateBuilder1.element(
q = BSONDocument("firstName" -> "Bob"),
u = BSONDocument("age" -> 19),
upsert = false,
multi = true)))
updates.flatMap { ops => updateBuilder1.many(ops) }
}
Also note that version 0.18.8 is about one year old, latest version being the major release 1.0.0.
我在挖掘 SO 时发现 this answer。
基本上,这正是我需要的。但是,在我当前的 ReactiveMongo 版本(0.18.8)中,db.command(RawCommand(commandDoc))
似乎不再可能。 DB下没有“命令”。我似乎无法找到此命令移动的位置。
谁能帮帮我?或者告诉我我还能如何实现我需要的东西?
我正在尝试在单个数据库命令中对多个具有不同值的文档执行多个更新。
谢谢!
在 documentation 中,您可以看到插入、更新或删除的批量操作示例。
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
import reactivemongo.api.bson.BSONDocument
import reactivemongo.api.bson.collection.BSONCollection
def updateWithBulk(personColl: BSONCollection) = {
// Bulk update: multiple update
val updateBuilder1 = personColl.update(ordered = true)
val updates = Future.sequence(Seq(
updateBuilder1.element(
q = BSONDocument("firstName" -> "Jane", "lastName" -> "Doh"),
u = BSONDocument("age" -> 18),
upsert = true,
multi = false),
updateBuilder1.element(
q = BSONDocument("firstName" -> "Bob"),
u = BSONDocument("age" -> 19),
upsert = false,
multi = true)))
updates.flatMap { ops => updateBuilder1.many(ops) }
}
Also note that version 0.18.8 is about one year old, latest version being the major release 1.0.0.