我在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(并希望保留)。
非常感谢您
答案 0 :(得分:1)
printResults
帮助程序仅用于演示目的,不应在应用程序中使用,因为它不会返回任何内容。它可用于调试目的。
first()
方法返回一个SingleObservable[Document]
,要从文档中获取_id
,您只需从地图中调用getter,例如:document("_id")
。 Scala驱动程序中的文档是类型安全的,所有值均为BsonValue
。如果_id
始终是String
,则可以像这样:String
从BsonValue
中将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()