Du måste använda $ne
operatör.
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
Detta kommer endast att uppdatera dokumentet om det inte finns något underdokument i "artikel"-arrayen med hashtaggens värde lika med "foo".
Som @BlakesSeven nämnde i kommentaren
$addToSet
blir irrelevant när du väl testar förekomsten av ett av värdena, så detta kan lika gärna vara en$push
för tydlig kod. Men principen är korrekt eftersom$addToSet
fungerar på hela objektet och inte bara en del av det.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)