【问题标题】:In ReactiveMongo 0.18.8, how can I perform an update of several documents, with different values, in a single command?在 ReactiveMongo 0.18.8 中,如何在单个命令中更新多个具有不同值的文档?
【发布时间】:2020-10-08 16:10:49
【问题描述】:

我在 SO 中挖掘时发现了 this answer

基本上,这正是我所需要的。但是,在我当前的 ReactiveMongo 版本(0.18.8)中,db.command(RawCommand(commandDoc)) 似乎不再可能。 DB下没有“命令”。我似乎找不到这个命令移动到哪里了。

谁能帮帮我?或者告诉我我还能如何实现我需要的东西?

我正在尝试在单个 DB 命令中执行多个具有不同值的文档的多个更新。

谢谢!

【问题讨论】:

    标签: mongodb scala reactivemongo


    【解决方案1】:

    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) }
    }
    

    另请注意,版本 0.18.8 大约有一年的历史,最新版本是主要版本 1.0.0。

    【讨论】:

      猜你喜欢
      • 2019-01-18
      • 2016-12-29
      • 1970-01-01
      • 2017-02-14
      • 2010-12-16
      • 1970-01-01
      • 2016-09-28
      • 2023-03-23
      • 2018-01-24
      相关资源
      最近更新 更多