2016-07-15 2 views
3

У меня есть схема, которая выглядит как этотмангуст сортировать по функции

var user = new Schema({ 
    preference1: { // preference is a number between 1 - 10 
    type: Number 
    }, 
    preference2: { // preference is a number between 1 - 10 
    type: Number 
    } 
}) 

, как я могу найти документы и сортировать по функции на полях предпочтений? Скажем fn что-то вроде этого

fn = Math.abs(preference1 - 3) + preference2^2

ответ

2

I рода найти временное решение. Это работает, но это не совсем то, что я искал ... код действительно грязный и, очевидно, вы не можете взять произвольную fn для сортировки ..

, например, сказать fn = (a+3) * (b+5)

Media.aggregate() 
.project({ 
    "type": 1, 
    "status": 1, 
    "newField1": { "$add": [ "$type", 3 ] }, 
    "newField2": { "$add": [ 5, "$status" ] }, 
}) 
.project({ 
    "newField3": { "$multiply": [ "$newField1", "$newField2" ] }, 
}) 
.sort("newField3") 
.exec() 
Смежные вопросы