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 contoh 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 yang unik di 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 senyawa unik pada sku dan pabrikan untuk memastikan bahwa kombinasi sku dan pabrikan 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 menciptakan entri indeks untuk setiap elemen array. Misalnya, jika sebuah array memiliki 50 item, ia memiliki 50 entri indeks. Karena itu, indeks multi-kunci yang unik menegakkan keunikan di semua item individual. 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, build 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, penyisipan 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 indeks, penyisipan, dan pembaruan akan gagal seperti dijelaskan di atas jika bidang yang diindeks hilang dari dua (atau lebih) dokumen.