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

日付を正しく保存する方法は?

    デフォルトでは(追加設定なしで)c#ドライバーは、ローカル日付をutc日付としてデータベースに保存します(日付-タイムゾーンオフセット)が、アクションなしで読み戻します(つまり、utc日付)。

    このため、データベースから日時をロードすると、2時間で差分が返されます(タイムゾーンオフセット)。逆シリアル化中に、mongodb c#ドライバーがUTC日付をローカルタイムゾーン日付に変換するように言うには、2つのアプローチがあります。

    1.特定の日付フィールドの属性を使用:

    [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
    public DateTime SomeDateProperty {get;set;}
    

    2.すべての日時フィールドのグローバル設定を介して(デフォルトはUtcInstance ):

    DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;
    

    #1または#2を実行すると、現地の日付が表示されます。

    更新:

    #2は最新のドライバーバージョンでは廃止されているため、代わりに以下のコードを使用してください:

    BsonSerializer.RegisterSerializer(typeof(DateTime), 
                 new DateTimeSerializer(DateTimeSerializationOptions.LocalInstance));
    

    更新:

    #2が再び変更されました:

    BsonSerializer.RegisterSerializer(typeof(DateTime), DateTimeSerializer.LocalInstance);
    


    1. Mongodbに文字列として保存された日付を処理するにはどうすればよいですか?

    2. プロキシをインスタンス化できません...パラメータのないコンストラクタが見つかりませんでした

    3. MongoDBアグリゲーション中にサーバーxがタイムアウトしました

    4. サブドキュメントをクエリし、一致するサブドキュメントのみを返す