sql >> Base de Datos >  >> NoSQL >> MongoDB

Uso de la funcionalidad Mongoose/MongoDB $addToSet en una matriz de objetos

Necesitas usar el $ne operador.

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

Esto actualizará el documento solo si no hay ningún subdocumento en la matriz "artículo" con el valor del hashtag igual a "foo".

Como @BlakesSeven mencionó en el comentario

El $addToSet se vuelve irrelevante una vez que está probando la presencia de uno de los valores, por lo que también podría ser un $push para la claridad del código. Pero el principio es correcto ya que $addToSet funciona en todo el objeto y no solo en una parte.

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