MongoDB – Operador $addToSet

MongoDB proporciona diferentes tipos de operadores de actualización de array para actualizar los valores de los campos de array en los documentos y el operador $addToSet es uno de ellos. Este operador se usa para agregar un valor a una array y si el valor ya existe en la array, este operador no hará nada.

Sintaxis:

{ $addToSet: { <field1>: <value1>, ... } }

Aquí, <field> puede especificar con notación de puntos en documentos incrustados/anidados.

  • Este operador no inserta elementos duplicados en la array y no afecta los elementos duplicados ya presentes. Aquí, el orden de los valores no importa.
  • Si el campo especificado en el $addToSetoperador no está presente en el documento, este operador crea un campo de array en el documento con valores o elementos.
  • Si el valor especificado es una array en el $addToSet operador, entonces este operador agregará la array completa como un solo elemento. O si desea agregar elementos por separado en la array, use el modificador $each.
  • Este operador no funciona con campos que no son de array.
  • Si el valor es un documento, MongoDB verifica si el documento existe o no en la array. Si el documento especificado contiene el mismo campo y valor y el orden del campo también es el mismo que el del documento existente, entonces el documento especificado es un documento duplicado como resultado, el operador $addToSet no agrega dichos documentos en la array.
  • Puede usar este operador con métodos como update(), findAndModify(), etc., según sus requisitos.

En los siguientes ejemplos, estamos trabajando con:

Base de datos: GeeksforGeeks
Colección: colaborador
Documento: dos documentos que contienen los detalles del colaborador en forma de pares de valor de campo.

Agregar valor en una array:

En este ejemplo, estamos agregando el valor «JS++» en la array de idioma del documento que satisface la condición especificada, es decir, el nombre: «Rohit».

db.contributor.update({name: "Rohit"}, {$addToSet: {language: "JS++"}})

Agregar valores duplicados en la array:

En este ejemplo, estamos agregando el valor «Perl» en la array de idioma del documento que satisface la condición especificada, es decir, el nombre: «Sumit». Pero el operador $addToSet no agrega este valor en la array de idioma porque ya existe en la array de idioma.

db.contributor.update({name: "Sumit"}, {$addToSet: {language: "Perl"}})

Usando $cada modificador con el operador $addToSet:

En este ejemplo, estamos agregando varios valores, es decir, [“Perl”, “Go”, “Ruby”] en la array de idioma con la ayuda de $cada modificador. Aquí, «Perl» no se agrega a la array porque ya existe.

db.contributor.update({name: "Sumit"}, {$addToSet: 
                      {language:{$each: ["Perl", "Go", "Ruby"]}}})

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *