MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Masalah datetime dengan Mongo dan C#

Alasannya adalah bahwa format BSON DateTime menyimpan nilai dengan presisi yang lebih rendah daripada nilai .NET DateTime, jadi ketika Anda membacanya kembali dari database, nilainya telah terpotong.

Jika nilai DateTime Anda adalah properti dari kelas C# yang Anda buat serial, Anda dapat meminta pembuat serial untuk membuat serial nilai DateTime sebagai dokumen yang disematkan yang berisi nilai BSON DateTime (dipotong) dan nilai .NET DateTime asli (disimpan sebagai Kutu). Dalam hal ini, nilainya tidak akan terpotong saat deserialized.

Misalnya:

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

Anda juga dapat menggunakan BsonRepresentation dari Int64 atau String dan tidak kehilangan presisi, tetapi dokumen yang disimpan hanya memiliki Ticks atau representasi string dan tidak ada BSON DateTime, yang menyulitkan untuk melakukan kueri terkait DateTime.

Anda juga ingin mengingat bahwa nilai DateTime disimpan dalam UTC dalam database. Praktik terbaik adalah selalu menggunakan nilai UTC untuk penyimpanan dan hanya menggunakan waktu lokal saat menampilkannya kepada pengguna.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Penyebaran Strapi Heroku gagal terhubung ke MongoDB

  2. Proyek selektif agregat MongoDB

  3. mengembalikan nilai dari panggilan balik di node.js dan luwak

  4. XML ke BSON menggunakan C#

  5. Driver Java MongoDB:autoConnectRetry