update - mongodb modificar documento
¿Puedes especificar una clave para $ addToSet en Mongo? (1)
Puede calificar su update
con un objeto de consulta que impida la actualización si el name
ya está presente en profile_set
. En el caparazón:
db.coll.update(
{_id: id, ''profile_set.name'': {$ne: ''nick''}},
{$push: {profile_set: {''name'': ''nick'', ''options'': 2}}})
Por lo tanto, esto solo realizará $push
para un documento con un _id
correspondiente y donde no haya un elemento profile_set
donde name
sea ''nick''
.
Tengo un documento:
{ ''profile_set'' :
[
{ ''name'' : ''nick'', ''options'' : 0 },
{ ''name'' : ''joe'', ''options'' : 2 },
{ ''name'' : ''burt'', ''options'' : 1 }
]
}
y quisiera agregar un nuevo documento al set de perfil_set si el nombre no existe ya (independientemente de la opción).
Entonces en este ejemplo, si traté de agregar:
{''name'' : ''matt'', ''options'' : 0}
debería agregarlo, pero agregar
{''name'' : ''nick'', ''options'' : 2}
no debe hacer nada porque ya existe un documento con nombre nick
aunque la option
sea diferente.
Mongo parece coincidir con todo el elemento y yo termino para comprobar si es el mismo y termino con
profile_set containing [{''name'' : ''nick'', ''options'' : 0}, {''name'' : ''nick'', ''options'' : 2}]
¿Hay alguna manera de hacer esto con $ addToSet o tengo que presionar otro comando?