Javascript 基于大容量数据的MongoDB排序

Javascript 基于大容量数据的MongoDB排序,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,使用NodeJS,如果我重命名我的telename表并获取新的数据,那么这段代码绝对可以正常工作。一直如此。然而,我现在收集的数据已经突破了总结果:1649272 db.collection(telemName).find(options).sort({ "d" : 1 }).toArray(function (err, telemetryData) { console.log(telemetryData.length, "data points to insert"); var

使用NodeJS,如果我重命名我的
telename
表并获取新的数据,那么这段代码绝对可以正常工作。一直如此。然而,我现在收集的数据已经突破了总结果:1649272

db.collection(telemName).find(options).sort({ "d" : 1 }).toArray(function (err, telemetryData) {
    console.log(telemetryData.length, "data points to insert");
    var newlastInsert = telemetryData[telemetryData.length - 1].d;
    callback(null, db, telemetryData, newlastInsert)
});
为什么我的排序失败,因此产生了这个错误:

TypeError:无法读取未定义的属性“length”

显然,这意味着没有返回任何数据,我可以100%向您保证,我正在排序的字段是
{“d”:1}
,并且一直工作到现在没有任何更改

超过一百万左右的大数据集会破坏Mongo排序吗?如果我重新运行应用程序,它工作正常。表格增长,程序运行

以下是直接来自我的数据库的示例数据集,仅供参考:

根据:

当无法从索引中获取排序顺序时,MongoDB将进行排序 结果在内存中,这要求对结果集进行排序 小于32兆字节

继续为您的排序创建索引(示例):


或者添加一个

您使用的是什么版本的mongodb?您从文档中读过这个剪贴画吗?您在数据库日志中看到任何错误吗?
err
toArray
回调中包含什么?无论如何,为了获得良好的排序性能,它需要能够使用索引。如果我没记错的话,它已经被索引了。然而,有一种可能是我把它拿走了,因为我把收藏搞得一团糟。。让我查看错误日志
MongoError:find命令期间执行器错误:OperationFailed排序操作使用的内存超过最大33554432字节。添加索引,或指定较小的限制。
是的。。。
db.records.createIndex( { a: 1 } )