当前位置: 首页 > 工具软件 > Casbah > 使用案例 >

mongodb二进制文件java_java-如何从Scala(Casbah)访问mongoDB中的二进制数据

白腾
2023-12-01

我是mongoDB的新手,所以这可能是一个非常愚蠢的问题…

我正在尝试从Scala访问Rails mongo会话存储.

val sessions = MongoConnection("localhost", 27017)("databaseName")("sessions")

val session = sessions.findOneById("1qzyxraa27shwq2qctkon44fl")

如果我打印会话,它看起来像这样:

Some({ "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(...)

使用杰克逊的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"))

标签:casbah,scala,mongodb,java

来源: https://codeday.me/bug/20191123/2066675.html

 类似资料: