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

本文关键字:DateTime 插入 mongodb ISODate 何使用 | 更新日期: 2023-09-27 18:29:52

我有一个类。

我在mongodb中添加了类。

但是DateTime属性显示字符串

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);

我想要插入像日期

谢谢你的帮助。

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

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

我不得不问,为什么要跳过这些障碍?当您调用Insert()时,为什么不让驱动程序为您序列化对象呢?

collection.Insert(FRM_FORMREQUEST);

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

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