2016-03-28 9 views
2

Mit NodeJS, wenn ich meine telemName Tabelle umbenenne und frische Daten erhalte, funktioniert dieser Code absolut gut. Immer hat. Allerdings haben die Sammlung, die ich jetzt verletzt hat Ergebnisse gesamt: 1649272MongoDB Sortiert nach hohen Datenmengen

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) 
}); 

Warum wird meine Art nicht, ergo was diesen Fehler:

TypeError: Cannot read property 'length' of undefined

Offensichtlich bedeutet es keine Daten zurückgegeben wird, und ich kann Ich garantiere Ihnen, 100%, dass das Feld, das ich sortiere, { "d" : 1 } ist und bis jetzt ohne Änderungen gearbeitet hat.

Haben große Datenmengen von über einer Million Mongo-Sortierung einfach einen Bruch? Wenn ich die Anwendung frisch starte, funktioniert es gut. Die Tabelle wächst, das Programm läuft.

Referenz, hier ein Beispieldatensatz direkt aus meiner Datenbank:

enter image description here

+0

Welche Version von mongodb verwenden Sie? –

+0

Sieht aus wie 3.2.1 –

+0

Haben Sie diesen Snippit aus den Dokumenten gelesen? https://docs.mongodb.org/manual/reference/method/cursor.sort/#restrictions ... sehen Sie Fehler in den Datenbankprotokollen? –

Antwort

1

Nach 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.

einen Index für Ihre Art (Beispiel) Gehen Sie weiter und erstellen:

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

Oder hinzufügen a limit()

Verwandte Themen