Имам централизирана услуга за регистриране, написана на 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, без да имате проблеми с лятното време и часовото време по подразбиране?
По-добре ли е да съхранявате ISODate със следния формат в C#?
{
"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);
Благодаря ви много за вашата помощ. Много го оценявам.
за разбирането