MongoDB $in 运算符数组最大长度

Pap*_*ter 5 mongodb meteor

在 Meteor 中,我使用 MongoDB 来存储对象的集合。插入了大约 500k 文档。

我使用Objets.find({ "_id": { "$in": objIds } });其中 objIds 是 _id 数组。当我的数组长度为 1000 时,这工作正常,但当我尝试使用 13145 _ids 时,应用程序停止响应。

显然 _id 字段上已经有一个索引,并且此搜索可能永远不会发生,但我不确定这是否是正常行为。$in 运算符有最大长度吗?在文档中找不到。

这是我在 Meteor 中的发布:

Meteor.publish('objetsByIds', function objetsByIdsPublication(objIds) {
      return Objets.find({ "_id": { "$in": objIds } });
  })
Run Code Online (Sandbox Code Playgroud)

小智 1

对 Meteor 不太了解,但是,MongoDB 在检索大量数据时使用游标,并且 Meteor 如何处理这个问题取决于驱动程序的实现。

虽然您可以在这里查看游标,但我想到的另一个想法是划分查询。因此,如果您知道 1000 效果很好,请使用 mod 进行循环,使结果的长度为 1000 个文档。