4

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

我以字符串的形式接收对象,这已从article.ToBsonDocument().ToJson()POCO 上使用的 .NET 应用程序传递给我。

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

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

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

有什么建议么?

编辑感谢下面@Jim Dagg 的提示,对 ISODate 和 BsonDocument 进行了一些谷歌搜索,结果发现了这个 gem。更改要使用的 c# 代码

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

解决它。

4

1 回答 1

2

构造ISODate函数调用是导致问题的原因。从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",那么您应该开展业务。

于 2013-05-10T18:56:25.670 回答