2016-07-15 89 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

我有種找到一個臨時解決方案。它的工作原理,但也算不上什麼,我一直在尋找...代碼是非常的混亂,顯然你不能把任意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()