MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwenden der Mongoose / MongoDB $addToSet-Funktionalität für ein Array von Objekten

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 } }
)