Anda perlu menggunakan $ne
operator.
var data = { 'kind': 'tortoise', 'hashtag': 'foo' };
Model.update(
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$addToSet': { 'articles': data } }
)
Ini akan memperbarui dokumen hanya jika tidak ada sub dokumen dalam larik "artikel" dengan nilai hashtag sama dengan "foo".
Seperti yang disebutkan @BlakesSeven dalam komentar
$addToSet
menjadi tidak relevan setelah Anda menguji keberadaan salah satu nilai, jadi ini mungkin juga$push
untuk kejelasan kode. Tapi prinsipnya benar karena$addToSet
bekerja pada keseluruhan objek dan bukan hanya sebagian.
Model.update({
{ 'articles.hashtag': { '$ne': 'foo' } },
{ '$push': {'articles': data } }
)