Sie müssen den $ne
verwenden Betreiber.
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
Dadurch wird das Dokument nur aktualisiert, wenn es kein untergeordnetes Dokument im „article“-Array mit dem Wert des Hashtags gleich „foo“ gibt.
Wie @BlakesSeven im Kommentar erwähnt
Das $addToSet
wird irrelevant, sobald Sie auf das Vorhandensein eines der Werte testen, also kann dies genauso gut ein $push
sein für Code-Klarheit. Aber seit $addToSet
ist das Prinzip richtig wirkt auf das gesamte Objekt und nicht nur auf einen Teil davon.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)