update remove mongo from array addtoset arrays mongodb

arrays - remove - Agregue mĂșltiples valores usando el operador $ addToSet Mongo



push element to array mongodb (2)

$addToSet operador $addToSet agrega un valor a una matriz solo si el valor no está ya en la matriz. Si el valor está en la matriz, $addToSet no modifica la matriz.

Quiero insertar dos valores que no se deben duplicar a través de una solicitud. es posible?

Intenté pasar una matriz al operador $addToSet pero insertó una matriz en lugar de cada valor de esa matriz.

$ mongo test MongoDB shell version: 2.4.9 connecting to: test > db.c.insert({a: [1, 2, 3]}) > db.c.find() { "_id" : ObjectId("53511a255a82cd559393d840"), "a" : [ 1, 2, 3 ] } > db.c.update({}, {$addToSet: {a: [2, 4]}}) > db.c.find() { "_id" : ObjectId("53511a255a82cd559393d840"), "a" : [ 1, 2, 3, [ 2, 4 ] ] }


De los documentos para $addToSet :

Si el valor es una matriz, $addToSet agrega la matriz completa como un elemento único. Para agregar cada elemento del valor por separado, use $addToSet con el modificador $each . Ver Modificadores para más detalles.

Así que deberías usar esto en su lugar:

db.c.update({}, {$addToSet: {a: {$each: [2, 4]}}})


Sí. Pero necesita que se agregue el modificador $each en su estado de cuenta:

db.c.update({},{ $addToSet: { a: {$each: [ 2, 4 ] } } })

Y el resultado:

{ "a" : [ 1, 2, 3, 4 ] }