Devi usare il $ne
operatore.
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
Questo aggiornerà il documento solo se non ci sono documenti secondari nell'array "article" con il valore di hashtag uguale a "foo".
Come menzionato da @BlakesSeven nel commento
Il $addToSet
diventa irrilevante una volta che stai verificando la presenza di uno dei valori, quindi potrebbe anche essere un $push
per chiarezza del codice. Ma il principio è corretto poiché $addToSet
funziona sull'intero oggetto e non solo su una parte di esso.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)