Насколько я знаю, нет существенных различий в эффективности , за исключением в некоторых случаях, например, при упорядочении по дате (поскольку в ObjectId есть дата и время и т. Д.)
Например, вы потеряете возможность простого заказа по _id , вы также потеряете преимущества для шардинга и распространения .Кроме этого, , хотя я все равно лично буду использовать ObjectId ... до тех пор, пока int не вызывает сомнений (конечно) ... с вами все будет в порядке.
Поскольку _id всегда «возвращается» в запросе, я полагаю, вы сэкономите немного времени и передачу данных (немного).
Вы даже можете сделатьваш _id массив, если вы хотите, и он будет все индексировать, хорошо видеть этот ответ (не то, чтобы я рекомендовал это большую часть времени.)
Также см .: Оптимизация идентификаторов объектов