Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

457
Visualizações
¿Los índices únicos ignorarán los campos que no existen?

Tengo un índice de MongoDB:

 Reservation.index( { source: 1, accountID: 1, // <-- This is the only required field confirmationCode_1: 1, confirmationCode_2: 1, confirmationCode_3: 1 }, {name: "Unique_reservation_index_1", unique: true} );

Aquí hay algunas entradas de muestra que tengo en la base de datos y quiero asegurarme de que no se puedan hacer duplicados:

 [ { source: "A", accountID: "AAA", confirmationCode_1: "ABC" }, { source: "B", accountID: "BBB", confirmationCode_1: "ABC" confirmationCode_2: "DEF" }, { source: "C", accountID: "CCC", confirmationCode_3: "GHI" } ]

A veces tengo el código de confirmationCode_1 configurado y no el código de confirmationCode_2 , otras veces tengo configurado el código de confirmationCode_1 y el código de confirmationCode_2 . Otras veces tengo el código de confirmationCode_3 configurado.

Quiero que MongoDB me permita tener el siguiente documento (faltan los campos confirmationCode_2 y confirmationCode_3 ). ¿Me dejará con el índice anterior?

 { source: "A", accountID: "123", confirmationCode_1: "ABC" }

¿Me impedirá agregar dos documentos similares con confirmationCode_2 no definido o se considerará lo mismo? Por ejemplo, si permite el documento anterior, ¿se evitará?

 { source: "A", accountID: "AAA", confirmationCode_1: "ABC_2" }

Si no proporciono el campo confirmationCode_2 , ¿establece el campo confirmationCode_2 en null ?

Si cambio el índice único para incluir sparse: true , ¿cómo actuará de manera diferente?

 Reservation.index( { source: 1, accountID: 1, // <-- This is the only required field confirmationCode_1: 1, confirmationCode_2: 1 }, {name: "Unique_reservation_index_1", unique: true, sparse: true} );
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Del documento MongoDB en un índice único ,

Un índice único garantiza que los campos indexados no almacenen valores duplicados

Se permite un campo indefinido/vacío/nulo siempre que no tenga la misma tupla de valores de los campos en el índice compuesto.

A continuación se muestra el resultado real de mi prueba: ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Puede observar que el documento se agregó con éxito bajo el índice único.

over 4 years ago · Santiago Trujillo Relatório

0

¿Los índices únicos ignorarán los campos que no existen?

No, el índice almacenará un valor nulo para este campo, MongoDB impondrá la unicidad en la combinación de los valores clave del índice.

 //You have this docuemt on you MongoDB { source: "A", accountID: "123", confirmationCode_1: "ABC" } //You try to insert the next document, note the missing "accountID" field //Even though "source" and "confirmationCode_1" //This operation SUCCESS because //MongoDB will enforce uniqueness on the "combination" of the index key values { source: "A", confirmationCode_1: "ABC" } //You try to insert the next document //The operation FAIL to insert the document //because of the violation of the unique constraint //on the combination of key values { source: "A", accountID: "123", confirmationCode_1: "ABC" }

¿Qué sucede si cambia unique: true a unique: true, sparse: true ?

Un índice que es disperso y único evita que la colección tenga documentos con valores duplicados para un campo, pero permite múltiples documentos que omiten la clave.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda