MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb c# драйвер и ISODate

В повечето случаи искате да съхранявате UTC дати в базата данни, така че вашият DateTime трябва да бъде конструиран като:-

DateTest = new DateTime(2013, 10, 13, 0, 0, 0, DateTimeKind.Utc) //this is the date

С това първият от вашите коментирани модулни тестове вече преминава.

Без да посочвате DateTimeKind оставяте го на случайността. MongoDB изглежда приема, че е локален и го преобразува в UTC в базата данни.

Обърнете внимание също, че стойностите на MongoDB DateTime имат по-малка точност от стойностите на .NET DateTime. Ако искате да съхраните произволни стойности на DateTime и да ги получите обратно по такъв начин, че все още да съвпадат, тогава ще трябва да ги закръглите до най-близката милисекунда, преди да ги съхраните.

Ако наистина искате да съхранявате местно време, препоръчвам ви да преминете от DateTime към DateTimeOffset и го сериализирайте като дълга Tick стойност за UTC DateTime и стойност за отместването.

Обърнете внимание, че освен ако не съхраните отместването, изчислено по времето, когато е получена стойността на DateTime, тогава методите на .NET за преобразуване в LocalTime са по същество безполезни, тъй като те не знаят кога е започнало лятното часово време, нито дори знаят в коя зона идва стойността на DateTime от. Като цяло обработката на .NET DateTime оставя много да се желае и съдържа много подвеждащи методи, които твърдят, че помагат, но всъщност не са.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Съвпадение с подниз в агрегирането на mongodb

  2. Spring data mongodb премахва свойство от документ с помощта на MongoTemplate

  3. $elemmatch не работи в MongoDB

  4. Правилно обработване на асинхронни Mongo действия в Node Promise

  5. C# 10gen и mongo:десериализация за членове като интерфейси