2017-01-24 9 views
0

Ich habe ein Mungo-Schema untermongodb sortiert Auftrag Mongoose mit in NodeJS

var testdata = new Test({ 
     Product_Type: 10, 
     Product_ID: 'GPR', 
     attrib: [ 
        { 
         Year:2017, 
         Month: 3 
        }, 
        { 
         Year:2011, 
         Month: 3 
        }, 
        { 
         Year:2012, 
         Month: 3 
        }, 
        { 
         Year:2015, 
         Month: 3 
        } 
       ], 
    }); 

testdata.save(function(err, testdata) { 
    if(err){ 
     console.log('saving data error',err); 
    }else{ 
     res.status(200).json({'msg':'Data inserted'}); 
    } 

}); 

gezeigt Wenn ich von mongodb attrib Informationen bin Überprüfung speichert, wie es in Schema gegeben ist, aber ich will attrib Speicher in mongodb wie unten

{ 
     Year:2017, 
     Month: 3 
    }, 
    { 
     Year:2015, 
     Month: 3 
    }, 
    { 
     Year:2012, 
     Month: 3 
    }, 
    { 
     Year:2011, 
     Month: 3 
    } 

I atrrib Informationen speichert in absteigender Reihenfolge nach Jahr und Monat

Antwort

0

MongoDB nicht automatisch die Daten für Sie sortieren möchten.

Wenn Sie sortierte Daten speichern möchten, müssen Sie sie manuell sortieren, bevor Sie sie in Mongo einfügen. Dafür können Sie dies versuchen -

var testdata = new Test({ 
    Product_Type: 10, 
    Product_ID: 'GPR', 
    attrib: [ 
       { 
        Year:2017, 
        Month: 3 
       }, 
       { 
        Year:2011, 
        Month: 3 
       }, 
       { 
        Year:2012, 
        Month: 3 
       }, 
       { 
        Year:2015, 
        Month: 3 
       } 
      ].sort(function(d1,d2) {if(d1.Year==d2.Year) return d2.Month - d1.Month; else return d2.Year - d1.Year;}) 
}); 

Diese Sortiermethode sortiert Ihre Objekte in absteigender Reihenfolge. Dies ist nur eine naive Implementierung. Fühlen Sie sich frei, die Methode zu verbessern, wie Sie möchten.

Und wenn Sie unsortierte Daten in Mongo speichern möchten und es von Mongo beim Abfragen der Daten sortiert werden soll, dann müssen Sie den Operator sort() in Ihrer Abfrage verwenden. Lesen Sie darüber here.

+0

Syntaxfehler geben, wenn ich Ihren Code einfügen –

+0

@sarojmandal Wahrscheinlich verwenden Sie eine Node.js-Version, die keine Pfeilfunktionen unterstützt. Überprüfen Sie den bearbeiteten Code. –