sql >> Databáze >  >> NoSQL >> MongoDB

Ovladač mongodb scala – nelze načíst dokument

Dobře, obviňuji sebe (a mystickou dokumentaci ovladače)

Tento ovladač je asynchronní, takže musíme počkat, až se dokončí...Takže abych to shrnul pomocí (nalezeno zde ), který je skutečně použit v dokumentaci, aniž by byl v samotném ovladači

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

A změna načítání tímto způsobem:

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

}

Vyřeší to můj problém.




  1. Příliš mnoho otevřených souborů při zajištění indexového mongo

  2. Upgrade Sails.js na verzi 1 pro dotazy citlivé na malá a velká písmena

  3. mongodb se nespouští na ubuntu 18.04

  4. proč DuplicateKeyError:E11000 index chyby duplicitního klíče:test.test.$notification_1 dup key:{ :null }