$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 } }
)