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値は、.NETDateTime値よりも精度が低いことにも注意してください。任意のDateTime値を保存し、それらが一致するように戻す場合は、保存する前に最も近いミリ秒に丸める必要があります。

    本当に現地時間を保存したい場合は、DateTimeから切り替えることをお勧めします DateTimeOffsetへ UTCDateTimeの長いTick値とオフセットの値としてシリアル化します。

    DateTime値が取得されたときに計算されたオフセットを保存しない限り、LocalTimeに変換する.NETメソッドは、夏時間がいつ開始されたかを知らず、DateTime値がどのゾーンに来るかさえ知らないため、本質的に役に立たないことに注意してください。から。全体として、.NET DateTimeの処理には多くの要望があり、役立つと主張しているが実際には役に立たない誤解を招くメソッドが多数含まれています。



    1. PyMongo-カーソルの反復

    2. マングースで2つのORクエリをANDと組み合わせる

    3. シリアル化されたJSON文字列を解析しようとするときのMongoDBのISODate()の処理

    4. Jacksonを使用したJavaMongoDBObjectとの間の効率的なPOJOマッピング