sql >> データベース >  >> NoSQL >> MongoDB

MongoとC#の日時の問題

    その理由は、BSON DateTime形式は、.NET DateTime値よりも精度が低い値を格納するため、データベースから読み戻すときに、値が切り捨てられているためです。

    DateTime値がシリアル化するC#クラスのプロパティである場合は、BSON DateTime値(切り捨て)と元の.NET DateTime値(Ticksとして格納)の両方を含む埋め込みドキュメントとしてDateTime値をシリアル化するようにシリアライザーに依頼できます。その場合、逆シリアル化されたときに値は切り捨てられません。

    例:

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

    Int64またはStringのBsonRepresentationを使用して精度を失うことはありませんが、保存されたドキュメントはのみ ティックまたは文字列表現があり、BSON DateTimeがないため、DateTime関連のクエリを実行するのが困難です。

    また、DateTime値はUTCでデータベースに保存されることにも注意してください。ベストプラクティスは、ストレージに常にUTC値を使用し、ユーザーに表示するときは現地時間のみを使用することです。



    1. Redisは認証にユーザー名を使用しますか?

    2. mongodbクエリを動的に構築する方法

    3. デフォルトのセッションタイムアウトとは何ですか?RedisをバックエンドとしてSpringSessionを使用する場合の設定方法

    4. マングースを使用してMongoに挿入または更新し、更新中に内部要素を変更します