mongodb/mongoose 通过 id 查找文档数组的方法。 - 使用 $in 或多个 findbyId?

mongodb/mongoose The way to find an array of docs by ids. - Using $in or multiple findbyId?

我想查找具有 ID 数组的文档。我有两种方法

  1. 使用find({_id:{$in:arr}} , callback)

  2. 使用多个 findById,并使用一些异步代码包装器将它们一起执行。

这里我关心的是哪个更好?对于服务器端,第二个似乎需要更多的计算,但是数据库部分呢?

谢谢!

这取决于您认为什么对您的系统来说是繁重的操作。选项 1 需要 1 个数据库调用,而选项 2 需要多个(取决于您获取的数量)。

无论如何,选项 1 似乎是更好的选择,因为它 return 是一个游标,您只需对其进行迭代。至于选项 2,您需要多个数据库调用(可能是在一个循环中进行)并且它将 return 处理数据并关闭游标。

只有当您只有一个值要查找或您有特殊索引而不仅仅是 $in 查询时,选项 2 才会对您有利。说属性 1、属性 2 的索引。

可以参考this.