MongoDBsorting高容量数据
使用telemName
,如果我重命名我的telemName
表并获取新的数据,这个代码工作得很好。 总是有。 不过,我现在的collections已经违反了总结果: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) });
为什么我的sorting失败,ergo产生这个错误:
TypeError:无法读取未定义的属性“长度”
显然这意味着没有数据被返回,我可以保证100%,我正在sorting的字段是{ "d" : 1 }
并一直工作到现在没有任何变化。
大型数据集超过一百万左右只是打破了Mongosorting? 如果我运行应用程序新鲜,它工作正常。 表增长,程序运行。
作为参考,这里是直接从我的数据库中的示例数据集:
据此:
当无法从索引获取sorting顺序时,MongoDB会将结果sorting在内存中,这要求sorting的结果集小于32兆字节。
继续为你的sorting创build一个索引(例子):
db.records.createIndex( { a: 1 } )
或者添加一个限制()