在发布流程中,我需要使用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});
修好了。
答案 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"
,那么您应该开展业务。