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

Problémy s datem u Mongo a C#

Důvodem je, že formát BSON DateTime ukládá hodnoty s menší přesností než hodnota .NET DateTime, takže když ji čtete zpět z databáze, byla hodnota zkrácena.

Pokud je vaše hodnota DateTime vlastností třídy C#, kterou serializujete, můžete požádat serializátor, aby serializoval hodnotu DateTime jako vložený dokument obsahující jak hodnotu BSON DateTime (zkrácenou), tak původní hodnotu .NET DateTime (uloženou jako Ticks). V takovém případě nebude hodnota při deserializaci zkrácena.

Například:

public class MyClass {
    public ObjectId Id;
    [BsonRepresentation(BsonType.Document)]
    public DateTime MyDateTime;
}

Můžete také použít BsonRepresentation of Int64 nebo String a neztratit přesnost, ale pak uložený dokument pouze má Ticks nebo řetězcovou reprezentaci a žádný BSON DateTime, což ztěžuje provádění dotazů souvisejících s DateTime.

Měli byste také mít na paměti, že hodnoty DateTime jsou v databázi uloženy v UTC. Nejlepším postupem je vždy používat pro ukládání hodnoty UTC a při jejich zobrazování uživateli používat pouze místní časy.



  1. Mongoose dotaz na vnořené schéma

  2. Jak nainstaluji Predis na okna XAMPP?

  3. Může redis zakázat odpovědi na zřetězené příkazy?

  4. více než jeden index 2dsphere, nevím, který spustit geoNear