2

我在 MongoDB 中有以下文档:

{ "index_column" : "site_id", "mapped_column":"site_name"}

我正在使用我的 scala 代码中的 mongo-scala-driver 来查询服务器。如何将 mapped_column 获取到 scala String 变量?我尝试使用以下代码:

val result = mongocollection.find(equal("index_column", data)).first()

它返回一个org.mongodb.scala.ObservableImplicits$BoxedObservable@207c9b87 是否可以将 Observable 转换为 Iterator?我只需要 scala String 变量中的 mapped_column 值。

4

2 回答 2

2

Scala 驱动程序是完全异步的,因此您可以订阅结果。最简单的方法是使用foreach:

val result = mongocollection.find(equal("index_column", data)).first()
result.foreach { value => ... }

另一种选择是转换ObservableFuture

Await.result(result.toFuture(), 3 seconds)
于 2018-03-29T07:36:28.953 回答
1

我通过将驱动程序切换到 mongodb casbah 解决了这个问题,可以使用以下代码完成:

val result = mongocollection.find(MongoDBObject("index_column"-> "site_id")).one()

println(result.get("mapped_column"))
于 2016-02-26T03:34:00.413 回答