Musíte použít $ne
operátor.
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
Tím se dokument aktualizuje pouze v případě, že v poli "article" není žádný dílčí dokument s hodnotou hashtag rovnou "foo".
Jak @BlakesSeven zmínil v komentáři
$addToSet
přestane být relevantní, jakmile testujete přítomnost jedné z hodnot, takže to může být také$push
pro přehlednost kódu. Ale princip je správný, protože$addToSet
funguje na celém objektu a nejen na jeho části.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)