¿Puedes especificar una clave para $ addToSet en Mongo?

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?

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' .