Сортировка по виртуальному полю в mongoDB (Мангуст)

предположим, у меня есть некоторая схема, которая имеет виртуальное поле, подобное этому

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

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

в запросе можно ли сортировать результаты по виртуальному полю? Что-то вроде

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

когда я пытаюсь это сделать, результаты просто не сортируются...

1 ответов


вы не сможете сортировать по виртуальному полю, потому что они не хранятся в базе данных.

виртуальные атрибуты-это атрибуты, которые удобно иметь вокруг но которые не сохраняются в MongoDB.

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