Você impõe uma restrição exclusiva em índices compostos. Um índice composto exclusivo impõe exclusividade na combinação dos valores de chave de índice.
Para criar um índice único no MongoDB Shell, utilize o método db.collection.createIndex() com a opção unique definida como true.
db.collection.createIndex( { <field1>: <sortOrder>, <field2>: <sortOrder>, ... <fieldN>: <sortOrder> }, { unique: true } )
Sobre esta tarefa
Este exemplo adiciona um índice composto único nos campos groupNumber, lastname e firstname de uma coleção members. O índice garante que a combinação desses valores de campo seja exclusiva para cada documento na coleção.
Passos
Para criar um índice único nos campos groupNumber, lastname e firstname da coleção members, execute o seguinte comando em mongosh:
db.members.createIndex( { groupNumber: 1, lastname: 1, firstname: 1 }, { unique: true } )
O índice criado impõe exclusividade para a combinação de valores groupNumber, lastname e firstname.
Índices únicos compostos em campos com arrays incorporados
Considere uma coleção com o seguinte documento:
db.myColl.insertOne( { _id: 1, a: [ { loc: "A", qty: 5 }, { qty: 10 } ] } )
Crie um índice composto único multikey em a.loc e a.qty:
db.myColl.createIndex( { "a.loc": 1, "a.qty": 1 }, { unique: true } )
O índice único permite a inserção dos seguintes documentos na collection, pois o índice impõe exclusividade para a combinação dos valores a.loc e a.qty:
db.myColl.insertMany( [ { _id: 2, a: [ { loc: "A" }, { qty: 5 } ] }, { _id: 3, a: [ { loc: "A", qty: 10 } ] } ] )