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 com db.collection.createIndex() a unique opção definida true como.
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 collection 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 groupNumber noslastname campos, e firstname da members collection, execute o seguinte comando mongosh em:
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 incorporadas
Considere uma collection 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 } ] } ] )