sql >> データベース >  >> NoSQL >> MongoDB

mongodbscalaドライバー-ドキュメントを取得できません

    わかりました、私は自分自身(およびドライバーの神秘的なドキュメント)を非難します

    このドライバーは非同期であるため、完了するのを待つ必要があります...それを使用して要約すると(ここ )これは、ドライバー自体に含まれていなくても、ドキュメントで実際に使用されています

    implicit class DocumentObservable[C](val observable: Observable[Document]) extends ImplicitObservable[Document] {
       override val converter: (Document) => String = (doc) => doc.toJson
    }
    
    implicit class GenericObservable[C](val observable: Observable[C]) extends ImplicitObservable[C] {
       override val converter: (C) => String = (doc) => doc.toString
    }
    
    trait ImplicitObservable[C] {
      val observable: Observable[C]
      val converter: (C) => String
    
      def results(): Seq[C] = Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))
      def headResult() = Await.result(observable.head(), Duration(10, TimeUnit.SECONDS))
      def printResults(initial: String = ""): Unit = {
        if (initial.length > 0) print(initial)
        results().foreach(res => println(converter(res)))
      }
      def printHeadResult(initial: String = ""): Unit = println(s"${initial}${converter(headResult())}")
    }
    

    そして、そのように取得を変更します:

    def retrieveDocument(id: Int, collectionName: String, databaseName: String, url: String): Option[Document] = {
    var res: Option[Document] = None
    getMongoCollectionImmutable(collectionName, databaseName, url)
      .find(Filters.equal("_id", id))
      .limit(1).results().foreach({ x => res = Some(x) })
    res
    

    }

    それは私の問題を解決します。




    1. mongoDBへの動的xml

    2. MongoDB集計$divide計算フィールド

    3. このネストされたドキュメント構造(MongoDB)でクエリを作成するにはどうすればよいですか?

    4. 変数を正規表現に渡す方法