Ada banyak jawaban di sini, tetapi saya ingin mengisi semua yang kosong di sini:
Apakah ada cara untuk memperbarui dua koleksi secara atom di MongoDB?
Tidak. Pembaruan atom dari dua koleksi secara efektif merupakan transaksi. MongoDB tidak mendukung transaksi lintas koleksi atau bahkan di dalam koleksi.
MongoDB menyediakan beberapa pengubah yang bersifat atomik pada satu dokumen. Jadi Anda dapat menambahkan beberapa variabel berbeda sekaligus ($inc
). Meskipun ada beberapa batasan di sini, Anda tidak dapat melakukan dua operasi berbeda pada satu properti.
Apakah ada cara untuk mengubah sesuatu dalam satu koleksi secara kondisional berdasarkan hasil dari koleksi lain dalam satu kesempatan?
Ada beberapa dokumen di sini tentang pembaruan atom secara umum. Namun, yang benar-benar Anda butuhkan adalah antrean dan beberapa bentuk komit dua fase atau Anda memerlukan pemicu.
Pemicu belum diterapkan, jadi itu bukan pilihan dalam kasus Anda.
Ada kemungkinan bahwa pesan akan ditandai sebagai telah dibaca di antara tindakan tersebut, maka saya akan salah mengurangi jumlah "belum dibaca".
Pada titik ini, Anda memiliki beberapa strategi berbeda untuk membuat ini berperilaku dengan beberapa tingkat konsistensi. Terus terang, berdasarkan deskripsi Anda, Anda mungkin ingin menyelidiki pembuatan antrean sederhana yang memperbarui total Anda.