MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

mongodb scala driver - nie można pobrać dokumentu

Ok, więc obwiniam siebie (i mistyczną dokumentację sterownika)

Ten sterownik jest asynchroniczny, więc musimy tylko poczekać, aż się zakończy... Podsumowując, używając tego (znaleziono tutaj ), który jest rzeczywiście używany w dokumentacji, ale nie znajduje się w samym sterowniku

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())}")
}

I zmieniamy pobieranie w ten sposób :

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

}

Rozwiązuje mój problem.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wyszukiwanie tekstowe MongoDB ORAZ wiele wyszukiwanych słów

  2. Tablice Concat używające PyMongo nie powiodło się z nieznanym operatorem grupy „$concatArrays”

  3. Czy Meteor ma odrębne zapytanie dotyczące kolekcji?

  4. Mongoose (moduł node.js) powoduje wysokie zużycie procesora

  5. return Model.create(arr).exec() nie działa w manguście