sql >> Databáze >  >> NoSQL >> MongoDB

Použití funkce Mongoose / MongoDB $addToSet na poli objektů

Musíte použít $ne operátor.

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

Tím se dokument aktualizuje pouze v případě, že v poli "article" není žádný dílčí dokument s hodnotou hashtag rovnou "foo".

Jak @BlakesSeven zmínil v komentáři

$addToSet přestane být relevantní, jakmile testujete přítomnost jedné z hodnot, takže to může být také $push pro přehlednost kódu. Ale princip je správný, protože $addToSet funguje na celém objektu a nejen na jeho části.

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


  1. MongoDB:V cestě bylo nalezeno příliš mnoho pozičních (tj. '$') prvků

  2. Hibernujte s MongoDB

  3. Jak zkopíruji databázi z jednoho serveru MongoDB na druhý?

  4. Jak vytvořit datum dotazu v mongodb pomocí pymongo?