sql >> Databasteknik >  >> NoSQL >> MongoDB

Använda Mongoose / MongoDB $addToSet funktionalitet på en rad objekt

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


  1. MongoDB kartlägga/minska över flera samlingar?

  2. node.js databas

  3. MongoCollection kontra DBCollection java

  4. Mongoose att ta bort (dra) ett dokument inom en array, fungerar inte med ObjectID