鍍金池/ 問(wèn)答/人工智能  數(shù)據(jù)庫(kù)  網(wǎng)絡(luò)安全  HTML/ mongoose查詢?nèi)绾卧谝粋€(gè)sort條件之上再進(jìn)行一次sort?

mongoose查詢?nèi)绾卧谝粋€(gè)sort條件之上再進(jìn)行一次sort?

我現(xiàn)在通過(guò)mongoose查詢得到的一組集合類似這樣:

[{
    _id: "123456",
    sex: 0
},{
    _id: "222222",
    sex: 1
},{
    _id: "111111",
    sex: 1
},{
    _id: "333333",
    sex: 0
}]
我希望能得排序成這樣:

[{
    _id: "123456",
    sex: 0
},{
    _id: "333333",
    sex: 0
},{
    _id: "111111",
    sex: 1
},{
    _id: "222222",
    sex: 1
}]

即在 sex 升序的條件下, _id 再升序。

按照這個(gè)一樣問(wèn)題(https://segmentfault.com/q/10...)給的答案使用sort(條件1,條件二)語(yǔ)句,不能正確的返回結(jié)果,mongoose的sort()并不能執(zhí)行按照多個(gè)條件排序。

所以想再問(wèn)問(wèn)有木有什么方法能夠查詢的時(shí)候?qū)崿F(xiàn)這個(gè)效果?或者說(shuō)有木有什么比較好的算法可以實(shí)現(xiàn)的?

感謝各位

回答
編輯回答
不二心

搜了一些資料,應(yīng)該是沒(méi)有這種寫法。我做的就是從數(shù)據(jù)庫(kù)取的時(shí)候是按照第一個(gè)排序條件,拿出數(shù)據(jù)之后,自己又寫了一個(gè)排序的函數(shù),針對(duì)第二個(gè)條件進(jìn)行排序。

2017年5月31日 13:18
編輯回答
眼雜
var arr=[{
    id: 123456,
    sex: 0
},{
    id: 222222,
    sex: 1
},{
    id: 111111,
    sex: 1
},{
    id: 333333,
    sex: 0
}];

arr.sort(function (a, b) {
   if(a.sex===b.sex){
       return a.id-b.id
   } else{
       return a.sex-b.sex
   }
});
2018年3月29日 21:00