2016-03-28 4 views
2

Использование NodeJS, если я переименую таблицу telemName и получаю свежие данные, этот код работает абсолютно нормально. Всегда есть. Тем не менее, коллекция я теперь нарушившие Всего результатов: 1649272MongoDB Сортировка по данным большого объема

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: Cannot read property 'length' of undefined

Очевидно, это означает, что никакие данные не возвращаются, и я могу гарантируем вам 100%, что поле, которое я сортирую, равно { "d" : 1 } и работает до сих пор без изменений.

У больших массивов данных более миллиона или просто перерыв Mongo сортировки? Если я запустил приложение, оно работает нормально. Таблица растет, программа запускается.

Для справки, вот пример набора данных прямо из моей базы данных:

enter image description here

+0

Какую версию mongodb вы используете? –

+0

Похоже 3.2.1 –

+0

Вы прочитали этот снипп из документов? https://docs.mongodb.org/manual/reference/method/cursor.sort/#restrictions...если вы видите ошибки в журналах базы данных? –

ответ

1

По this:

When unable to obtain the sort order from an index, MongoDB will sort the results in memory, which requires that the result set being sorted is less than 32 megabytes.

Идите вперед и создать индекс для своего рода (пример):

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

Или добавить a limit()

Смежные вопросы