sql >> Databasteknik >  >> NoSQL >> MongoDB

använder akka-strömmar för att gå över mongosamlingen

Lösning 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)}

Lösning 2: med Alpakka som akka stream-kontakt för mongo

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

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



  1. Få flera nyckelvärden från Redis

  2. Få uppsättningen av alla unika värden i arrayfältet

  3. Redis Cluster vs ZeroMQ i Pub/Sub, för horisontellt skalade distribuerade system

  4. Hur skyddar man lösenordsfältet i Mongoose/MongoDB så att det inte kommer tillbaka i en fråga när jag fyller i samlingar?