MongoDB按大量数据排序

时间:2016-03-28 20:35:42

标签: javascript node.js mongodb

使用NodeJS,如果我重命名我的telemName表并获取新数据,则此代码可以正常工作。永远有。但是,我现在的收藏品已经违反了总结果: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)
});

为什么我的排序失败,ergo产生这个错误:

  

TypeError:无法读取属性'长度'未定义的

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

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

作为参考,这是一个直接来自我的数据库的样本数据集:

enter image description here

1 个答案:

答案 0 :(得分:1)

根据this

  

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

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

db.records.createIndex( { a: 1 } )

或添加limit()