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 を使用する mongoのakkaストリームコネクタとして

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



    1. オプションuseFindAndModifyはサポートされていません

    2. $exprクエリ演算子が配列ドット表記で機能しないようです

    3. mongodbは明確なレコードを取得します

    4. Mongooseのインスタンスメソッドで他のモデルを検索できますか?