sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb c# ovladač a ISODate

Ve většině případů chcete v databázi uložit datum a čas UTC, takže váš DateTime by měl být konstruován jako:-

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

Tímto nyní prošel první z vašich komentovaných testů jednotek.

Bez zadání DateTimeKind necháváš to náhodě. Zdá se, že MongoDB předpokládá, že je lokální, a v databázi jej převede na UTC.

Všimněte si také, že hodnoty MongoDB DateTime mají menší přesnost než hodnoty .NET DateTime. Pokud chcete uložit libovolné hodnoty DateTime a získat je zpět tak, aby se stále shodovaly, budete je muset před uložením zaokrouhlit na nejbližší milisekundu.

Pokud opravdu chcete ukládat místní časy, doporučuji přepnout z DateTime na DateTimeOffset a serializovat jej jako dlouhou hodnotu Tick pro UTC DateTime a hodnotu pro offset.

Všimněte si, že pokud neuložíte offset vypočítaný v době, kdy byla získána hodnota DateTime, pak jsou metody .NET pro převod na LocalTime v podstatě k ničemu, protože nevědí, kdy začal letní čas, ani nevědí, v jaké zóně hodnota DateTime přichází. z. Celkově zpracování .NET DateTime ponechává mnoho přání a obsahuje mnoho zavádějících metod, které tvrdí, že pomáhají, ale ve skutečnosti ne.



  1. Mongoose, aktualizuj hodnoty v poli objektů

  2. Co je špatného na dotazu na odstranění MongoDB pomocí mongodb java pro dílčí pole dokumentu?

  3. Chyba MongoDB na mongos:příliš mnoho pozičních možností

  4. Vytvoření middlewarové funkce pro kontrolu, zda je uživatelská role rovna 'Admin'