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 ] }