varios update registro modificar insertar documentos documento consultas comandos avanzadas agrupar actualizar mongodb pymongo

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?