翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
インデックスプロパティ: unique
サポートされているインデックスタイプ
| オプション | 3.6 | 4.0 | 5.0 | 8.0 | Elastic クラスター |
|---|---|---|---|---|---|
| 単一フィールド | はい | はい | はい | はい | はい |
| compound | はい | はい | はい | はい | はい |
| マルチキー | はい | はい | はい | はい | はい |
一意のオプションを使用して、コレクション内のドキュメント間でフィールド (複数可) の一意性を確保します。
例
次の例は、次のサンプルドキュメントで一意のインデックスを作成する方法を示しています。
{ "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') }
単一フィールド
productId に一意の単一フィールドインデックスを作成して、同じ productId が複数のドキュメントに存在しないようにします。
db.collection.createIndex( { "productId": 1 }, { name: "productId_unique", unique: true } )
複合
sku と製造元に一意の複合インデックスを作成し、sku と製造元の同じ組み合わせが複数のドキュメントに存在しないようにします。
db.collection.createIndex( { "sku": 1, "manufacturer": 1 }, { name: "sku_and_manufacturer_unique", unique: true } )
マルチキー
バーコードに一意のマルチキーインデックスを作成して、バーコード配列の値が複数のドキュメントに存在しないようにします。
db.collection.createIndex( { "barcodes": 1 }, { name: "barcodes_unique", unique: true } )
配列のインデックスを作成すると、配列の各要素のインデックスエントリが作成されます。たとえば、配列に 50 個の項目がある場合、50 個のインデックスエントリがあります。このため、一意のマルチキーインデックスは、すべての個々の項目に一意性を適用します。たとえば、次のドキュメントは、値の配列フィールドインデックスに対する一意の制約に違反します。
{ "values": [ 1, 2, 3] } { "values": [ 3, 2 ] } --> 3 and 2 already exist { "values": [ 1 ] } --> 1 already exists
一意のインデックスでは、次の動作に注意してください。
2 つ (または複数) のドキュメントのインデックス付きフィールドの値が同じである既存のデータに一意のインデックスを作成すると、インデックスの構築は失敗し、次のエラーが発生します。
could not create unique index: <collection> index: <index name>インデックス付きフィールドの値が別のドキュメントのそのフィールドの値と一致するドキュメントを挿入すると、挿入は次のエラーで失敗します。
E11000 duplicate key error collection: <collection> index: <index name>インデックス付きフィールドの新しい値が別のドキュメントのそのフィールドの値と一致するように既存のドキュメントを更新すると、更新は次のエラーで失敗します。
E11000 duplicate key error collection: <collection> index: <index name>インデックス付きフィールドがドキュメントにない場合、値は null として扱われます。インデックスの作成、挿入、更新は、インデックス付きフィールドが 2 つ (または複数) のドキュメントにない場合、上記のように失敗します。