org.mongodb.scala:从返回的文档中获取价值

时间:2018-09-29 20:39:36

标签: mongodb scala

我在scala中具有以下脚本,用于检索符合特定条件的文档。我还使用Helpers.scala文件在控制台中打印结果。

val mongoClient: MongoClient = MongoClient("mongodb://192.168.99.100:27017")
val db: MongoDatabase = mongoClient.getDatabase("quotedb")
val collection: MongoCollection[Document] = db.getCollection("quotes")
val value = collection.find().projection(Projections.fields(Projections.include("_id"))).first().printResults()

printResults()以类似于文档的格式返回结果,如下所示:

{“ _id”:“ MSFT”}

有没有办法只打印“ MSFT”而不加引号,“ _ id”或方括号?我发现here的一种可能的解决方案要求我使用com.mongodb驱动程序,而不是当前使用的org.mongodb.scala(并希望保留)。

非常感谢您

1 个答案:

答案 0 :(得分:1)

printResults帮助程序仅用于演示目的,不应在应用程序中使用,因为它不会返回任何内容。它可用于调试目的。

first()方法返回一个SingleObservable[Document],要从文档中获取_id,您只需从地图中调用getter,例如:document("_id")。 Scala驱动程序中的文档是类型安全的,所有值均为BsonValue。如果_id始终是String,则可以像这样:StringBsonValue中将document.getString("_id")拆箱。

printResults助手仅在println(_)中的每个结果上调用Observable,因此仅打印_id值就需要将Observable[Document]转换为通过Observable[String]函数的map

  collection
    .find()
    .projection(Projections.fields(Projections.include("_id")))
    .first()
    .map(d => d.getString("_id"))
    .printResults()