$neを使用する必要があります オペレーター。
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
これにより、ハッシュタグの値が「foo」に等しいサブドキュメントが「article」配列にない場合にのみ、ドキュメントが更新されます。
@BlakesSevenがコメントで述べたように
$addToSet値の1つが存在するかどうかをテストすると、関係がなくなるため、これは$pushである可能性もあります。 コードを明確にするため。ただし、$addToSetなので、原則は正しいです。 オブジェクトの一部だけでなく、オブジェクト全体で機能します。
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)