MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

използване на akka потоци за преминаване през колекцията на mongo

Решение 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)}

Решение 2: използвайки Alpakka като конектор за поток akka за mongo

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

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Boot не може да актуализира шардирана колекция на azure cosmos db(MongoDb)

  2. Ключови неща за наблюдение в MongoDB

  3. Премахване на MongoDB данни - възстановяване на дисковото пространство

  4. Подигравка на модела Mongoose с шега

  5. MongoDB '$or' и регулярен израз в PHP