如何使用c#将ISODate(DateTime)插入mongodb

时间:2016-01-10 17:43:54

标签: c# mongodb

我有一节课。

我将课程添加到mongodb。

但DateTime Properties显示字符串

C#

public class FRM_FORMREQUEST
{
    public int ORACLE_ID { get; set; }
    public string FORMNUMBER { get; set; }
    public string COMPANYCODE { get; set; }
    public DateTime? RECORDDATE { get; set; }
    public string RECORDUSER { get; set; }
}

mongodb记录

{
"_id" : ObjectId("56927dfc249d951f1031f526"),
"ORACLE_ID" : 771653,
"FORMNUMBER" : "4992014309217",
"COMPANYCODE" : "499",
"RECORDDATE" : "2014-08-21T19:35:27",
"RECORDUSER" : "parttime35"
}

商业

 var jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(FRM_FORMREQUEST);



 MongoDB.Bson.BsonDocument document = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(jsonData);


 frmFormCollection.Insert(document);

我想要插入日期

感谢所有人的帮助。

1 个答案:

答案 0 :(得分:2)

问题在于您使用Json.Net将其序列化为JSON,默认情况下会将日期写为ISO 8601标准格式的字符串。然后,您使用BsonSerializer将其反序列化为BsonDocument,除非您给出任何其他指令,否则将假设这些是字符串。

我不得不问,为什么要跳过这些篮球?当您致电Insert()时,为什么不让司机为您序列化您的对象?

collection.Insert(FRM_FORMREQUEST);

或者,如果您必须使用BsonDocument,请使用mongo BsonSerializer直接转换对象(而不是先将其转换为Json)。

var document = FRM_FORMREQUEST.ToBson();
collection.Insert(document);