我是 mongoDB 的新手,所以这可能是一个非常愚蠢的问题......
我正在尝试从 Scala 访问 Rails Mongo session 存储。
val sessions = MongoConnection("localhost", 27017)("databaseName")("sessions")
val session = sessions.findOneById("1qzyxraa27shwq2qctkon44fl")
如果我打印 session ,它看起来像这样:
Some({ "data" : <Binary Data> , "_id" : "1qzyxraa27shwq2qctkon44fl" , "updated_at" : { "$date" : "2013-05-09T04:58:21.054Z"} , "created_at" : { "$date" : "2013-05-09T04:58:21.054Z"}})
如果我打印 updated_at
字段:
val updatedAt = session.get("updated_at")
Thu May 09 00:58:21 EDT 2013
我感兴趣的字段是数据字段:
val data = session.get("data")
问题是,我真的不确定该怎么做,我无法将它转换为字符串或似乎无法将其转换为我尝试过的任何内容。
如果我手动找到它,在数据库中,该字段显示为:
BinData(0,"BAh7BkkiEF9jc3JmX3Rva2VuB......")
而且我能够手动处理该 base64 字符串,但我如何获得可以使用 casbah 处理的内容?
最佳答案
经过大量谷歌搜索,我找到了这个 issue在跟踪器上。尽管它说它已在 2.8 中修复,但它仍然只显示 mongo-java-driver-2.11.1 的“BinaryData”。
可以对您的数据进行以下调用,以便它按预期返回完整数据:
com.mongodb.util.JSONSerializers.getStrict().serialize(...)
使用 jackson 的 ObjectMapper,我可以做这样的事情来获取二进制数据字段:
val session = sessions.findOneByID("1qzyxraa27shwq2qctkon44fl")
val data = com.mongodb.util.JSONSerializers.getStrict.serialize(session.get.get("data"))
val mapper = new ObjectMapper()
val tree = mapper.readTree(data)
println(tree.get("$binary"))
关于java - 如何从 scala (casbah) 访问 mongoDB 中的二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16492372/