微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将(.net)BsonDocument字符串转换为(java)DBObject

在发布流程中,我需要使用Java将DBObject插入到mongo db集合中.

我收到对象作为字符串,这已经从一个.NET应用程序传递给我,该应用程序在POCO上使用了article.ToBsonDocument().ToJson().

在我的流程中,在Java中,我尝试使用BasicDBObject doc =(BasicDBObject)JSON.parse(content);但我在日期得到一个com.mongo.util.JSONParseException:

"CreationDate" : ISODate("2013-03-18T08:50:53Z")

我可以改变在C#中生成内容的方式,我可以在java中更改如何写入数据库,我唯一的限制是必须在两个系统之间作为字符串传递.

有什么建议?

编辑感谢下面@Jim Dagg的提示,一些谷歌搜索ISODate和BsonDocument结果是this gem.更改c#代码使用

article.ToBsonDocument().ToJson(new JsonWriterSettings{OutputMode = JsonOutputMode.Strict});

固定它.

解决方法:

ISODate构造函数调用是导致问题的原因.从an issue on the MongoDB JIRA开始:

The parser accepts these two date formats: seconds ->
"yyyy-MM-dd'T'HH:mm:ss'Z'" or seconds.milleseconds ->
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" Just add seconds to your $date value
and the aggregation command should work. Here’s the JSON doc that I
had success with: { "aggregate" : "test", pipeline : [ {$match : {
date : { $date : "2012-05-01T12:30:00Z" } } } ] }

如果您删除ISODate构造函数并只是将日期呈现为(例如)“2013-03-18T08:50:53Z”,那么您应该开展业务.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐