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$addToSettorna-se irrelevante quando você está testando a presença de um dos valores, então isso também pode ser um$pushpara clareza do código. Mas o princípio está correto, pois$addToSetfunciona em todo o objeto e não apenas parte dele.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)