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

Bagaimana cara mengatur batasan unik untuk bidang dalam dokumen yang bersarang dalam array?

Ya. Silakan lihat dua skenario berikut tentang menggunakan indeks unik pada bidang array dengan dokumen yang disematkan.

Indeks Multikey Unik (indeks pada bidang dokumen yang disematkan dalam array):


Skenario Pertama:

db.arrays.createIndex( { _id: 1, "array.id": 1}, { unique: true } )

db.arrays.insertOne( { "_id": 1, "array": [ { "id": 1, "content": "11"}, { "id": 2, "content": "22"} ] } )

db.arrays.insertOne( { "_id": 2, "array": [ { "id": 1, "content": "1100"}, { "id": 5, "content": "55"} ] } )

db.arrays.insertOne( {"_id": 3, "array": [ {"id": 3, "content": "33"}, {"id": 3, "content": "3300"} ] } )

Ketiga dokumen tersebut dimasukkan tanpa kesalahan.

Sesuai catatan di Indeks Multikey Unik , di atas, dokumen dengan _id : 3 memiliki dua dokumen yang disematkan dalam array dengan "array.id" yang sama nilai:3 .

Selain itu, keunikan diterapkan pada dua kunci dari indeks gabungan { _id: 1, "array.id": 1} dan ada duplikat "array.id" nilai di seluruh dokumen juga ( _id nilai 1 dan 2 ).


Skenario Kedua:

db.arrays2.createIndex( { "array.id": 1 }, { unique: true } )

db.arrays2.insertOne( { "_id": 3, "array": [ { "id": 3, "content": "33" }, { "id": 3, "content": "330"} ] } )
db.arrays2.insertOne( { "_id": 4, "array": [ { "id": 3, "content": "331" }, { "id": 30, "content": "3300" } ] } )

Dokumen pertama dengan _id : 3 berhasil dimasukkan. Yang kedua memiliki kesalahan:"errmsg" : "E11000 duplicate key error collection: test.arrays2 index: array.id_1 dup key: { array.id: 3.0 } " . Perilaku ini seperti yang diharapkan sesuai dengan catatan Unique Multikey Index .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Membuat koleksi Meteor baru dengan cepat

  2. Urutan hasil di MongoDB dengan $in?

  3. Kecocokan elemen mengembalikan semua data sedangkan saya hanya membutuhkan data yang dipilih

  4. Tidak Tersedia Tampilan Implisit

  5. Bagaimana cara mengatur kunci utama di MongoDB?