在Meteor中,我使用MongoDB来存储一组对象。插入了大约500,000个文档。
我使用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 } });
})
答案 0 :(得分:1)
对Meteor不太了解,但是,MongoDB在检索大量数据时使用游标,并且根据驱动程序实现Meteor的处理方式。
虽然您可以查看游标here,但我想到的其他想法是划分查询。因此,如果你知道1000的效果很好,那就做一个循环,使用mod,你可以使结果长达1000个文档。