MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Usando a funcionalidade Mongoose / MongoDB $addToSet na matriz de objetos


Você precisa usar o $ne operador.
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
    { 'articles.hashtag': { '$ne': 'foo' } }, 
    { '$addToSet': { 'articles': data } }
)

Isso atualizará o documento somente se não houver um subdocumento na matriz "artigo" com o valor de hashtag igual a "foo".

Como @BlakesSeven mencionou no comentário

O $addToSet torna-se irrelevante quando você está testando a presença de um dos valores, então isso também pode ser um $push para clareza do código. Mas o princípio está correto, pois $addToSet funciona em todo o objeto e não apenas parte dele.
Model.update({ 
    { 'articles.hashtag': { '$ne': 'foo' } }, 
    { '$push': {'articles':  data } }
)