AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

複合ユニークインデックスの作成

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

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 } ] }
] )