Puedes calificar tu update
con un objeto de consulta que impide 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}}})
Entonces esto solo realizará el $push
para un documento con un _id
coincidente y donde no hay un profile_set
elemento donde name
es 'nick'
.