Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将(.net)BsonDocument字符串转换为(java)DBObject_Java_Mongodb - Fatal编程技术网

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

将(.net)BsonDocument字符串转换为(java)DBObject,java,mongodb,Java,Mongodb,在发布流中,我需要使用Java将DBObject插入mongo db集合 我以字符串的形式接收对象,它是从.NET应用程序传递给我的,该应用程序在POCO上使用了article.ToBsonDocument().ToJson() 在我的流程方面,在Java中,我尝试只使用BasicDBObject doc=(BasicDBObject)JSON.parse(content)但是我在某个日期得到了一个com.mongo.util.JSONParseException: "CreationDate"

在发布流中,我需要使用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中写入DB,我唯一的限制是它必须作为字符串在两个系统之间传递

有什么建议吗

编辑多亏了下面@Jim Dagg的提示,一些搜索ISODate和BsonDocument的结果出来了。将c#代码更改为使用

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

已修复。

导致问题的原因是
ISODate
构造函数调用。发件人:

解析器接受这两种日期格式:秒->
“yyyy-MM-dd'T'HH:MM:ss'Z'”
或秒。千秒->
“yyyy-MM-dd'T'HH:MM:ss.SSS'Z'”
只需将秒数添加到您的
$date
值中即可 聚合命令应该可以工作。这是我想要的JSON文档 已成功完成:
{“聚合”:“测试”,管道:[{$match:{
日期:{$date:{$date:“2012-05-01T12:30:00Z”}}]}


如果您删除ISODate构造函数,只需将日期呈现为(例如)
“2013-03-18T08:50:53Z”
,您就可以开始工作了。

谢谢。我想我将不得不在c#中处理
.ToJson()
调用的输出。听起来你要么搞乱方法本身(如果你有这个选项——我只使用Java驱动程序),要么在字符串中找到ISODate并将其吹走(及其相关参数)。似乎有一种方法可以告诉
ToJson()
扩展方法使用严格的Json输出:Nice find;这看起来是个赢家。