2012-11-19 14 views
7

Lassen Sie uns sagen, dass ich etwas Schema haben, die wie dieseSortierung nach virtuellen Feld in mongoDB (Mungo)

var schema = new mongoose.Schema(
{ 
    name: { type: String } 
}, 
{ 
    toObject: { virtuals: true }, 
    toJSON: { virtuals: true } 
}); 

schema.virtual("name_length").get(function(){ 
    return this.name.length; 
}); 

In einer Abfrage ein virtuelles Feld hat, ist es möglich, die Ergebnisse durch das virtuelle Feld zu sortieren? So etwas wie

schema.find().sort("name_length").limit(5).exec(function(docs){ ... }); 

Wenn ich versuche, dies sind die Ergebnisse einfach nicht sortiert ...

Antwort

9

Sie werden nicht in der Lage sein, von einem virtuellen Feld zu sortieren, weil sie in der Datenbank nicht gespeichert werden.

Virtuelle Attribute sind Attribute, die bequem um haben, die aber nicht zu mongodb erhalten bleiben.

http://mongoosejs.com/docs/2.7.x/docs/virtuals.html

+0

Ich weiß, was virtuelle Attribute sind und dass sie in db nicht gespeichert werden. Ich war am wandern vielleicht könnte es ein Plugin oder eine spezielle Methode geben, die alle Getter nach virtuellen Attributen aufruft und dann die Dokumente sortiert. Ich denke, dass es so etwas nicht gibt. – ArVan

+0

Also, ich denke, meine Lösung sollte sein, in Javascript zu sortieren und zu begrenzen, nachdem ich Ergebnisse bekommen habe? – ArVan

+0

und ich denke, Sie können nicht virtuelle in Fund Zustand verwenden? – ArVan

Verwandte Themen