Du skal bruge $ne
operatør.
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
Dette vil kun opdatere dokumentet, hvis der ikke er noget underdokument i "artikel"-arrayet med værdien af hashtag lig med "foo".
Som @BlakesSeven nævnte i kommentaren
$addToSet
bliver irrelevant, når du først tester for tilstedeværelsen af en af værdierne, så dette kan lige så godt være en $push
for klarhed i koden. Men princippet er korrekt siden $addToSet
virker på hele objektet og ikke kun en del af det.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)