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

Проблеми с дата и час с Mongo и C#

Причината е, че форматът BSON DateTime съхранява стойности с по-малка точност от стойност на .NET DateTime, така че когато го прочетете обратно от базата данни, стойността е съкратена.

Ако вашата стойност на DateTime е свойство на C# клас, който сериализирате, можете да поискате от сериализатора да сериализира стойността на DateTime като вграден документ, съдържащ както стойността на BSON DateTime (съкратена), така и оригиналната стойност на .NET DateTime (съхранена като Ticks). В този случай стойността няма да бъде съкратена при десериализация.

Например:

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

Можете също да използвате BsonRepresentation на Int64 или String и да не губите прецизност, но тогава съхранения документ само има Ticks или низово представяне и няма BSON DateTime, което затруднява извършването на свързани с DateTime заявки.

Също така трябва да имате предвид, че стойностите на DateTime се съхраняват в UTC в базата данни. Най-добрата практика е винаги да използвате UTC стойности за съхранение и да използвате само местни часове, когато ги показвате на потребителя.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb еквивалент на писател в Spring Batch?

  2. Клас „MongoClient“ не е намерен

  3. Javers ENTITY_INSTANCE_WITH_NULL_ID при използване на 2 бази данни

  4. MongoDB:какви са разликите между документи, записи и атрибути?

  5. Mongoose findOne вграден документ от _id