Трябва да използвате $ne
оператор.
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
Това ще актуализира документа само ако в масива "article" няма поддокумент със стойността на hashtag, равна на "foo".
Както @BlakesSeven спомена в коментара
$addToSet
става неуместно, след като тествате за наличието на една от стойностите, така че това може също да е$push
за яснота на кода. Но принципът е правилен, тъй като$addToSet
работи върху целия обект, а не само върху част от него.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)