Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

444
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda