使用 $in 运算符和大量 ID 进行查询

Query with $in operator and large list of Ids

我有相当多的文档 ID 需要遍历(比如 5k-10k)。从 mongodb 版本 2.6 开始,$in 运算符不限制该数字。早期版本的 combinatorial limit 为 4 mio。

也就是说,在 mongodb 中做类似的事情是否有意义,或者它是否是一种性能损失的反模式,我应该在应用程序层中手动迭代?

这有点反模式,但有时别无选择。

如果您可以更改架构并使该查询变得多余,那么您应该这样做。如果做不到,自己做肯定比让 MongoDB 做要慢。

但是,您还需要考虑另一个限制。 MongoDB 中的每个文档限制为 16MB,并且每个查询都作为文档发送,因此如果项目足够多,您可能会达到该限制并获得异常。