MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Sub dokumen pembaruan luwak jika ada

Jadi Anda adalah bagian dari perjalanan ke sana, tetapi tentu saja ketika Anda tidak menemukan doc maka Anda tidak akan memiliki doc untuk bekerja dengan dalam panggilan balik. MongoDB memiliki cara asli untuk menangani pembaruan semacam ini, tetapi tentu saja Anda perlu menguji kecocokan seperti Anda.

Apa yang bisa kita lakukan di sini hanyalah bekerja dalam true atau false kondisi keberadaan dokumen.

Mempertimbangkan vote.value untuk menjadi true your Anda atau false untuk "suara positif"

Jika Anda menemukan bahwa ada dokumen yang cocok, Anda dapat mengeluarkan pembaruan seperti ini:

Question.update(
  { 
    _id: questionId, 
    "votes.createdBy" vote.createdBy,
    "votes.up": {"$ne": vote.value }
  },
  { $set: { "votes.$.up": vote.value } }
);

Sehingga cocok dan menggunakan posisional $ operator untuk memastikan indeks yang benar item yang cocok diperbarui. Apa yang saya tambahkan di sana memastikan bahwa Anda bahkan tidak menyentuh dokumen di mana vote.vaule sudah memiliki nilai yang sama.

Dan dalam kondisi salah Anda ingin $push ke dalam larik dengan baru barang:

Question.update(
  { 
    _id: questionId
  },
  { 
    $push: { 
      "votes": {
        "up": vote.value,
        "createdBy": vote.createdBy
      }
    }
  }
);

Tentu saja tambahkan detail panggilan balik di mana writeConcern diterapkan, yang mungkin Anda lakukan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Bagaimana cara menanyakan string json?

  2. Tetapkan batas koleksi mongo db

  3. Permintaan untuk dokumen yang memiliki sub-bidang internal dari nilai yang diberikan

  4. pencocokan array mongodb

  5. MongoDB:desain terbaik untuk aplikasi perpesanan