我有一个用 C# 编写的集中式日志记录服务。此服务接收日志条目(以 JSON 字符串形式)并将它们添加到 MongoDB 集合中。我使用官方的 C# MongoDB 驱动程序和 MongoDB 版本 3.0。
假设我有一个具有这种基本结构(和示例)的文档:
{
"_id" : ObjectId("562c2785a075b738c484ad99"),
"Service" : "WebServer A",
"Description" : "User has logged in",
"SourceTime" : ISODate("2015-10-25T00:41:15.469Z")
}
正如您在本文档中看到的,我有一个名为“SourceTime”的日期字段。这种 UTC 格式不会告诉我文档是在夏季(+02:00)还是默认时间(+01:00)创建的。
我想问你用 ISODate 对象存储日期字段而不遇到夏季和默认时间问题的最佳方法是什么?
在 C# 中存储具有以下格式的 ISODate 更好吗?
{
"SourcTime" : ISODate("2015-10-25T01:41:15.469+01:00")
}
如果是,有没有人有一个例子如何用 C# 实现这一点?
目前,我添加一个文档如下:
// parse String _document to a BsonDocument
BsonDocument document = BsonDocument.Parse(_document);
// Change SourceTime field to a DateTime object
var TimeElem = document.GetElement("SourceTime").Value.ToString();
DateTime newTime = DateTime.Parse(TimeElem);
// Update document
document.Set("SourceTime", newTime.ToUniversalTime()); // result ISODate("2015-10-25T00:41:15.469Z")
// Add to MongoDB
var collection = _database.GetCollection<BsonDocument>(_collectionName);
collection.InsertOneAsync(document);
非常感谢您的帮助。非常感谢。
问候