Você pode qualificar sua
update
com um objeto de consulta que impede a atualização se o name
já está presente em profile_set
. Na casca:db.coll.update(
{_id: id, 'profile_set.name': {$ne: 'nick'}},
{$push: {profile_set: {'name': 'nick', 'options': 2}}})
Portanto, isso só executará o
$push
para um documento com um _id
correspondente e onde não há um profile_set
elemento onde name
é 'nick'
.