Musisz użyć $ne
operatora.
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
To zaktualizuje dokument tylko wtedy, gdy w tablicy „article” nie ma poddokumentu o wartości hashtag równej „foo”.
Jak @BlakesSeven wspomniał w komentarzu
$addToSet
staje się nieistotny, gdy testujesz obecność jednej z wartości, więc równie dobrze może to być $push
dla przejrzystości kodu. Ale zasada jest poprawna, ponieważ $addToSet
działa na całym obiekcie, a nie tylko na jego części.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)