Няма големи разлики в ефективността, доколкото знам освен в определени случаи като подреждане по дата (тъй като ObjectId имат датата и часът в тях и т.н.)
Например ще загубите способността просто да поръчвате по _id ще загубите и предимствата за шардинг и разпространение . Освен това, въпреки че аз все още лично бих използвал ObjectId във всеки случай ... докато int е неприятно (разбира се) ... трябва да сте добре.
Тъй като _id винаги се „връща“ в заявка, предполагам, че ще спестите малко време и пренос на данни (малко малко.)
Можете дори да направите своя _id масив, ако искате, и всичко ще се индексира добре, вижте това отговор (не че го препоръчвам непременно през повечето време.)
Вижте също:Оптимизиране на идентификатори на обекти