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

时间:2013-05-10 18:23:53

标签: java mongodb

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

我将对象作为String接收,并且已经从在POCO上使用article.ToBsonDocument().ToJson()的.NET应用程序传递给我。

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

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

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

有什么建议吗?

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

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

修好了。

1 个答案:

答案 0 :(得分:2)

ISODate构造函数调用是导致问题的原因。来自an issue on the MongoDB JIRA

  

解析器接受这两种日期格式:秒 - >   "yyyy-MM-dd'T'HH:mm:ss'Z'"或seconds.milleseconds - >   "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"只需为您的$date值添加秒数即可   并且聚合命令应该工作。这是我的JSON文档   取得了成功:{ "aggregate" : "test", pipeline : [ {$match : { date : { $date : "2012-05-01T12:30:00Z" } } } ] }

如果删除ISODate构造函数并将日期简单地呈现为(例如)"2013-03-18T08:50:53Z",那么您应该开展业务。