Ya ini adalah dengan desain. MongoDB secara eksplisit tidak menyediakan join atau transaksi. Hapus + Simpan adalah bentuk transaksi.
Anda benar-benar memiliki dua opsi kompleksitas rendah di sini, keduanya melibatkan findAndModify
.
Opsi #1:satu koleksi
Berdasarkan deskripsi Anda, pada dasarnya Anda sedang membangun antrian dengan beberapa fitur tambahan. Jika Anda memanfaatkan satu koleksi maka Anda menggunakan findAndModify
untuk memperbarui status setiap item saat sedang diproses.
Sayangnya, itu berarti Anda akan kehilangan ini:...bahwa koleksi "masuk" dapat disimpan sangat kecil dan cepat dengan cara ini .
Opsi #2:dua koleksi
Opsi lainnya pada dasarnya adalah komit dua fase, memanfaatkan findAndModify
.
Lihat dokumen untuk ini di sini .
Setelah item diproses di A Anda mengatur bidang untuk menandainya untuk dihapus. Anda kemudian menyalin item itu ke B . Setelah disalin ke B Anda kemudian dapat menghapus item dari A .