1

挿入、読み取り、および削除はできますが、updateOne または updateMany を取得してドキュメントを変更することはできません。

libraryDependencies += "org.mongodb.scala" %% "mongo-scala-driver" % "1.1.1" で MongoDB 3.2.7 を使用しています

def read() = {
val query = Document("title" -> "Text Tiling")
methods.find(query).subscribe(
  (method: Document) => update(method.toJson()),                              // onNext
  (error: Throwable) => Logger.debug(s"Query failed: ${error.getMessage}"),   // onError
  () => Logger.debug("onComplete")                                            // onComplete
)}

def update(jsonSting:String): Unit = {
Logger.debug("update() " + jsonSting)

Logger.debug(methods.find().first().toString)
val observer = new Observer[UpdateResult] {
  override def onSubscribe(subscription: Subscription): Unit = {
    Logger.debug("onSubscribe: " + subscription.toString)
  }
  override def onComplete: Unit = {
    Logger.debug("onComplete")
  }
  override def onError(e: Throwable): Unit = {
    Logger.debug("onError: " + e.getMessage)
  }
  override def onNext(doc: UpdateResult) {
    Logger.debug("onNext")
  }
}

val filter = Document("title" -> "Text Tiling")
val mod = Document("$set" -> Document("reputation" -> 5))
val result = methods.updateOne(filter,mod).subscribe(observer)
Logger.debug("result: " + result)}

ログは次のとおりです。

[デバッグ] アプリケーション - update() { "_id" : { "$oid" : "5759542a4e0bf602adcab149" }, "title" : "Text Tiling", "reputation" : 0 }

[デバッグ] アプリケーション - org.mongodb.scala.ObservableImplicits$BoxedObservable@61ddc581

[デバッグ] アプリケーション - onSubscribe: org.mongodb.scala.ObservableImplicits$BoxedSubscription@6252b659

[デバッグ] アプリケーション - 結果: ()

[デバッグ] アプリケーション - onComplete

4

2 に答える 2

2

サブスクリプションの呼び出し要求は私にとってはうまくいきました。その後、他のイベントが呼び出されました。

override def onSubscribe(subscription: Subscription): Unit = {
    subscription.request(1)
  }

[デバッグ] アプリケーション - onNext

[デバッグ] アプリケーション - onComplete!

于 2016-06-09T21:00:38.077 に答える