Docs Menu
Docs Home
/ /

一意の複合インデックスの作成

複合インデックスに一意の制約を適用します。一意の複合インデックスでは、インデックスキー値の 組み合わせ に一意であることが強制されます。

MongoDB Shell でユニークインデックスを作成するには、 オプションをdb.collection.createIndex() uniqueに設定して、true メソッドを使用します。

db.collection.createIndex(
{
<field1>: <sortOrder>,
<field2>: <sortOrder>,
...
<fieldN>: <sortOrder>
},
{ unique: true }
)

この例では、 membersコレクションの groupNumberlastnamefirstname フィールドに一意の複合インデックスを追加します。インデックスにより、これらのフィールド値の組み合わせがコレクション内の各ドキュメントで一意になるようにします。

コレクションの groupNumberlastname、 、firstname フィールドにユニークインデックスを作成するには、membersmongosh で次のコマンドを実行します。

db.members.createIndex(
{ groupNumber: 1, lastname: 1, firstname: 1 },
{ unique: true }
)

作成されたインデックスでは、groupNumberlastnamefirstname の値の組み合わせは必然的に一意になります。

次のドキュメントを含むコレクションについて考えてみます。

db.myColl.insertOne(
{ _id: 1, a: [ { loc: "A", qty: 5 }, { qty: 10 } ] }
)

次のとおり、ユニークな複合マルチキー インデックスを a.loca.qty に作成します。

db.myColl.createIndex( { "a.loc": 1, "a.qty": 1 }, { unique: true } )

ユニークインデックスを使用すると、a.loca.qty の値の 組み合わせが必然的に一意になるため、次のドキュメントをコレクションに挿入できます。

db.myColl.insertMany( [
{ _id: 2, a: [ { loc: "A" }, { qty: 5 } ] },
{ _id: 3, a: [ { loc: "A", qty: 10 } ] }
] )

戻る

単一フィールドの一意

項目一覧