MongooseJs запрос с использованием $ in или Promise.all?

Я просто хочу задать вопрос. Допустим, у меня есть массив идентификаторов от 1 до 10000

[1, 2, 3, 4....... 10000]

Теперь я хочу получить все данные, что является быстрым или быстродействующим или более целесообразным?

await Promise.all(
  usersIds.map(async userId => dbCollection.users.findById(userId))
);

или же

dbCollection.users.find({
  _id: {$in: usersIds} 
})

Всего 1 ответ


Вообще говоря, вы хотите использовать $in а не Promise.all - это сокращает объем работы сети $in Promise.all , не будет полностью насыщать ваш пул соединений (если вы используете соединение объединение), и в итоге получается примерно такой же объем работы в монго.

Предполагая, что у вас действительно есть userIds 1..10000 , использование $gte и $lte будет еще быстрее, потому что в итоге вы получите лучший план запросов (планировщик запросов монго не достаточно умен, чтобы делать это самостоятельно) ,


Есть идеи?

10000