将(.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”,那么您应该开展业务.

点赞