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

Eksposur ObjectIds MongoDB

Versi singkat :ya, gunakan String di mana-mana.

Jika Anda setuju dengan anotasi, gunakan :

[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }

Jika tidak, Anda dapat menggunakan peta kelas :

BsonClassMap.RegisterClassMap<i_YourModel>(cm =>
 {
  cm.AutoMap();
  cm.SetIdMember(cm.GetMemberMap(x => x.Id)
    .SetIdGenerator(StringObjectIdGenerator.Instance));
 }
);

Versi panjang :

Disarankan untuk menggunakan sesuatu yang buram, yang tidak secara langsung terhubung ke implementasi basis data yang mendasarinya, dalam model dan lapisan layanan Anda sebanyak mungkin (bila memungkinkan).

Sebelumnya, id kunci utama yang biasanya berjumlah besar, yang kemudian dipetakan ke kolom kunci utama nomor pada database. Namun, saat menetapkan id baru ke entitas baru, pemeriksaan pada database harus dilakukan untuk memastikan memiliki id unik. Ada banyak teknik, dari generator id LO-HI, ke kolom auto_increment, ke urutan dll.

Dengan NoSQL, dan kebutuhan akan lebih banyak paralelisme, sebagian besar aplikasi sekarang menggunakan UUID atau variasinya, karena ID dapat dihasilkan dengan probabilitas yang masuk akal, itu akan menjadi unik tanpa harus menanyakan database apakah itu benar-benar unik, atau menggunakan urutan atau sejenisnya, yang merupakan hambatan dalam aplikasi yang diskalakan secara horizontal.

MongoDB tidak ada bedanya, dan menggunakan ObjectId yang merupakan sejenis UUID.

Id ini (baik mongo dan lainnya) selalu dapat direpresentasikan sebagai String, biasanya representasi HEX dari byte yang menyusun kunci. Jadi, dalam model Anda gunakan String sebagai id, di lapisan layanan Anda sama, di lapisan data Anda, ubah ke format apa pun yang lebih baik untuk implementasi basis data dasar Anda, dalam hal ini MongoDB.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara melihat bidang dokumen di mongo shell?

  2. Bahasa pemrograman terbaik untuk mengimplementasikan algoritma DBSCAN yang menanyakan database MongoDB?

  3. Ekspresi MongoDB untuk query array subdocuments

  4. Bagaimana IAsyncCursor digunakan untuk iterasi dengan driver mongodb c#?

  5. bagaimana cara menyimpan hasil dari kueri mongodb ke dalam variabel javascript?