sql >> Database teknologi >  >> NoSQL >> MongoDB

mongodb scala driver - kan ikke hente et dokument

Ok, så bebrejder jeg mig selv (og chaufførens mystiske dokumentation)

Denne driver er asynkron, så vi skal bare vente på, at den er færdig...Så for at opsummere ved at bruge det (fundet her ) som virkelig bruges i dokumentationen uden at være i selve driveren

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

Og ændrer hentning på den måde:

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

}

Det løser mit problem.




  1. Hvordan returnerer man ObjectId eller _id for et dokument i MongoDB? og fejl $in har brug for et array

  2. Hvordan tilføjer man et sidste felt til en eksisterende spring-data-mongodb dokumentsamling?

  3. Relationel databasedesign til mongoDB/mongoose design

  4. Hvordan laver man denne MongoDB-forespørgsel ved hjælp af java?