sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan kan jeg i ReactiveMongo 0.18.8 udføre en opdatering af flere dokumenter med forskellige værdier i en enkelt kommando?

I dokumentationen du kan se eksempler på masseoperationer til at indsætte, opdatere eller slette.

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



  1. Skema og underdokumenter i mongoose.js

  2. Indlejrede eller refererede relationer

  3. Opret en databaseklynge i skyen med MongoDB Atlas

  4. MongoDb primær replika bliver sekundær, hvis sekundær fejler