Sejauh yang saya tahu tidak ada perbedaan efisiensi yang besar kecuali dalam kasus tertentu seperti memesan berdasarkan tanggal (karena ObjectId memiliki datetime di dalamnya, dll.)
Misalnya Anda akan kehilangan kemampuan untuk hanya memesan dengan _id Anda juga akan kehilangan manfaat untuk sharding dan distribusi . Selain itu, sementara saya secara pribadi masih menggunakan ObjectId bagaimanapun juga ... selama int tidak tenang (tentu saja) ... Anda seharusnya baik-baik saja.
Sejak _id selalu "kembali" dalam kueri. Saya kira Anda akan menghemat sedikit waktu dan transfer data (sedikit.)
Anda bahkan dapat membuat _id . Anda array jika Anda mau, dan semuanya akan diindeks dengan baik melihat jawaban (bukan berarti saya selalu merekomendasikannya.)
Lihat juga:Mengoptimalkan ID Objek