Você precisa usar o
$ne
operador. var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
Isso atualizará o documento somente se não houver um subdocumento na matriz "artigo" com o valor de hashtag igual a "foo".
Como @BlakesSeven mencionou no comentário
O$addToSet
torna-se irrelevante quando você está testando a presença de um dos valores, então isso também pode ser um$push
para clareza do código. Mas o princípio está correto, pois$addToSet
funciona em todo o objeto e não apenas parte dele.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)