MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Utilizzo della funzionalità Mongoose / MongoDB $ addToSet su array di oggetti

Devi usare il $ne operatore.

var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
    { 'articles.hashtag': { '$ne': 'foo' } }, 
    { '$addToSet': { 'articles': data } }
)

Questo aggiornerà il documento solo se non ci sono documenti secondari nell'array "article" con il valore di hashtag uguale a "foo".

Come menzionato da @BlakesSeven nel commento

Il $addToSet diventa irrilevante una volta che stai verificando la presenza di uno dei valori, quindi potrebbe anche essere un $push per chiarezza del codice. Ma il principio è corretto poiché $addToSet funziona sull'intero oggetto e non solo su una parte di esso.

Model.update({ 
    { 'articles.hashtag': { '$ne': 'foo' } }, 
    { '$push': {'articles':  data } }
)