2012-11-19 16 views
7

Diciamo ho qualche schema che ha un campo virtuale come questoRicerca per campo virtuale in MongoDB (mangusta)

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 una query è possibile ordinare i risultati in base al campo virtuale? Qualcosa di simile

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

Quando provo questo, i risultati sono semplici non ordinato ...

risposta

9

Non sarà in grado di ordinare da un campo virtuale perché non sono memorizzati nel database.

Gli attributi virtuali sono attributi che si possono avere intorno a ma che non vengono mantenuti su mongodb.

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

+0

so che cosa gli attributi virtuali sono e che non sono memorizzati in db. Stavo vagando forse potrebbe esserci qualche plugin o un metodo speciale che chiama tutti i getter per gli attributi virtuali e poi ordina i documenti. Immagino che non ci sia nulla di simile. – ArVan

+0

Quindi, suppongo che la mia soluzione dovrebbe essere quella di ordinare e limitare in javascript dopo aver ottenuto i risultati? – ArVan

+0

e immagino che non sia possibile utilizzare i virtuali nella condizione di ricerca? – ArVan

Problemi correlati