MongooseJs使用$ in或Promise.all进行查询?

时间:2019-05-15 09:14:48

标签: mongodb performance mongoose

我只想问一个问题 可以说我有一个ID数组,即1至10000

New-AzStorageBlobSASToken

现在我想获取所有数据,这些数据是快速的,性能更好的还是更可取的呢?

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

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

1 个答案:

答案 0 :(得分:1)

通常来说,您将要使用$in而不是Promise.all -它减少了您要做的网络往返次数,不会完全饱和您的连接池(如果使用连接池),最终在mongo中的工作量大致相同。

假设您实际上有userIds1..10000,那么使用$gte$lte的速度会更快,因为您将获得更好的查询计划(mongo查询规划师不够聪明,无法独自执行此操作。