Tidak, itu tidak buruk sama sekali dan sebenarnya ObjectId
bawaan cukup besar dalam indeks jadi jika Anda yakin Anda memiliki sesuatu yang lebih baik maka Anda dipersilakan untuk mengubah nilai default _id
bidang untuk apa pun.
Tapi, dan ini adalah tapi yang besar , ada beberapa pertimbangan ketika memutuskan untuk menjauh dari ObjectId
yang dirumuskan secara default , terutama saat menggunakan _id penambahan otomatis seperti yang ditunjukkan di sini:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field
Multi threading bukanlah masalah besar karena findAndModify
dan kunci atom benar-benar dapat menanganinya, tetapi kemudian Anda baru saja menemukan masalah pertama Anda. findAndModify
bukan fungsi tercepat atau teringan dan ada penurunan kinerja yang signifikan yang terlihat saat menggunakannya secara teratur.
Anda juga harus mempertimbangkan overhead untuk melakukan ini sendiri, bahkan tanpa findAndModify
. Untuk setiap sisipan, Anda memerlukan kueri tambahan. Bayangkan memiliki id unik yang harus Anda query keunikannya setiap kali Anda ingin memasukkan. Pada akhirnya tingkat penyisipan Anda akan turun menjadi merangkak dan waktu penguncian Anda akan bertambah.
Tentu saja ObjectId
benar-benar pandai menjadi unik tanpa harus memeriksa atau merumuskan keunikannya sendiri dengan menyentuh database sebelum penyisipan, sehingga tidak memiliki overhead ini.
Jika Anda masih merasa bilangan bulat _id sesuai dengan skenario Anda, lakukan saja, tetapi ingatlah overhead yang dijelaskan di atas.