Вы можете присвоить свой update
объект запроса, который предотвращает обновление, если name
уже присутствует в profile_set
. В оболочке:
db.coll.update(
{_id: id, 'profile_set.name': {$ne: 'nick'}},
{$push: {profile_set: {'name': 'nick', 'options': 2}}})
Таким образом, это будет выполнять только $push
для документа с сопоставлением _id
и где нет элемента profile_set
, где name
есть 'nick'
.