MongooseJs запрос с использованием $ in или Promise.all? - PullRequest
0 голосов
/ 15 мая 2019

Я просто хочу задать вопрос. Допустим, у меня есть массив идентификаторов от 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 Ответ

1 голос
/ 15 мая 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...