sql >> Database >  >> NoSQL >> MongoDB

akka-streams gebruiken om mongo-verzameling te overlopen

Oplossing 1:

def changeModelAndInsertToNewCollection(person:Person) : Future[Boolean] ={
//Todo : call mongo api to update the person
???
}

def processPeople()(implicit m: Materializer): Future[Done] = {
val numberOfConcurrentUpdate = 10

val peopleSource: Source[Person, Future[State]] =
  collection
    .find(json())
    .cursor[Person]()
    .documentSource()

peopleSource
  .mapAsync(numberOfConcurrentUpdate)(changeModelAndInsertToNewCollection)
  withAttributes(ActorAttributes.supervisionStrategy(Supervision.restartingDecider))
  .runWith(Sink.ignore)}

Oplossing 2: met behulp van Alpakka als akka-streamconnector voor mongo

val source: Source[Document, NotUsed] =
MongoSource(collection.find(json()).cursor[Person]().documentSource())

source.runWith(MongoSink.updateOne(2, collection))



  1. MongoDB vindt documenten waarin alle array-elementen een bepaalde waarde hebben

  2. Voeg alleen documenten in MongoDB in als alle velden uniek zijn

  3. hoe een query te tonen tijdens het gebruik van queryannotaties met MongoRepository met lentegegevens

  4. Gebruik MongoDB-aggregatie om het snijpunt van twee sets in hetzelfde document te vinden