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'です 。