Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Indeks Properti: unik
Jenis indeks yang didukung
| Opsi | 3.6 | 4.0 | 5.0 | 8.0 | Cluster Elastis |
|---|---|---|---|---|---|
| bidang tunggal | Ya | Ya | Ya | Ya | Ya |
| senyawa | Ya | Ya | Ya | Ya | Ya |
| multi-tombol | Ya | Ya | Ya | Ya | Ya |
Gunakan opsi unik untuk memastikan keunikan bidang di seluruh dokumen dalam koleksi.
Contoh
Contoh berikut menunjukkan cara membuat indeks unik pada dokumen sampel berikut:
{ "productId": "PROD133726", "sku": "SKU24224", "name": "Basic Printer", "manufacturer": "The Manufacturer", "tags": [ "printer", "basic", "electronics", "business" ], "barcodes": [ "542364671", "886330670", "437445606" ], "reviews": [ { "review_date": ISODate('2024-01-19T21:37:10.585Z'), ... } ], "material": "Polycarbonate", "color": "Space Gray", "supplier": { "supplierId": "SUP4", "location": { "type": "Point", "coordinates": [ -71.0589, 42.3601 ] } }, "productEmbedding": [ -0.019320633663838058, 0.019672111388113596 ], "lastUpdated": ISODate('2025-10-20T21:37:10.585Z') }
bidang tunggal
Buat indeks bidang tunggal unik pada ProductID untuk memastikan bahwa ProductID yang sama tidak ada di lebih dari 1 dokumen:
db.collection.createIndex( { "productId": 1 }, { name: "productId_unique", unique: true } )
Senyawa
Buat indeks majemuk unik pada sku dan produsen untuk memastikan bahwa kombinasi sku dan produsen yang sama tidak ada di lebih dari 1 dokumen:
db.collection.createIndex( { "sku": 1, "manufacturer": 1 }, { name: "sku_and_manufacturer_unique", unique: true } )
multi-tombol
Buat indeks multi-kunci unik pada barcode untuk memastikan bahwa nilai apa pun dalam array barcode tidak ada di lebih dari 1 dokumen:
db.collection.createIndex( { "barcodes": 1 }, { name: "barcodes_unique", unique: true } )
Pengindeksan array membuat entri indeks untuk setiap elemen array. Misalnya, jika array memiliki 50 item, ia memiliki 50 entri indeks. Karena itu, indeks multi-kunci yang unik menegakkan keunikan di semua item individu. Misalnya, dokumen berikut akan melanggar batasan unik pada indeks bidang array nilai:
{ "values": [ 1, 2, 3] } { "values": [ 3, 2 ] } --> 3 and 2 already exist { "values": [ 1 ] } --> 1 already exists
Perhatikan perilaku berikut dengan indeks unik:
Jika Anda membuat indeks unik pada data yang ada di mana dua (atau lebih) dokumen memiliki nilai yang sama untuk bidang yang diindeks, pembuatan indeks akan gagal dengan kesalahan berikut:
could not create unique index: <collection> index: <index name>Jika Anda menyisipkan dokumen di mana nilai bidang yang diindeks cocok dengan nilai bidang itu di dokumen lain, sisipan akan gagal dengan kesalahan berikut:
E11000 duplicate key error collection: <collection> index: <index name>Jika Anda memperbarui dokumen yang ada sehingga nilai baru dari bidang yang diindeks cocok dengan nilai bidang tersebut di dokumen lain, pembaruan akan gagal dengan kesalahan berikut:
E11000 duplicate key error collection: <collection> index: <index name>Jika bidang yang diindeks hilang dari dokumen, nilainya akan diperlakukan sebagai null. Pembuatan, penyisipan, dan pembaruan indeks akan gagal seperti dijelaskan di atas jika bidang yang diindeks hilang dari dua (atau lebih) dokumen.