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