Nah, menggunakan tautan yang Anda sebutkan , saya lebih suka menggunakan pendekatan pengumpulan counter .
Pendekatan counter collections memiliki beberapa kelemahan antara lain :
- Itu selalu menghasilkan permintaan kelipatan (dua):satu untuk mendapatkan nomor urut, yang lain untuk melakukan penyisipan menggunakan id yang Anda dapatkan melalui urutan,
- Jika Anda menggunakan fitur sharding dari mongodb, dokumen yang bertanggung jawab untuk menyimpan status penghitung mungkin banyak digunakan, dan setiap kali akan mencapai server yang sama.
Namun itu harus sesuai untuk sebagian besar penggunaan.
Pendekatan yang Anda sebutkan ("yang optimis lingkaran" ) seharusnya tidak merusak IMO, dan saya tidak menebak mengapa Anda memiliki masalah dengannya. Namun saya tidak akan merekomendasikannya. Apa yang terjadi jika Anda mengeksekusi kode pada beberapa klien mongo, jika salah satu memiliki banyak latensi dan yang lain tetap menggunakan ID? Saya tidak ingin mengalami masalah seperti ini... Selain itu, setidaknya ada dua permintaan per operasi yang berhasil, tetapi tidak ada maksimum percobaan ulang sebelum berhasil...