monogoogle populateは、関連表のフィールドに従って並べ替えます.


問題の説明
通常の開発では、関連表の使用が多く、MongoDBでも同様です.
次のようにメニュー表があります.  tb_menuinfo:
var MenuSchema = new Schema({
    menu_name: String,       //    
    menu_code: {type:String,unique: true},       //       
    menu_url: String,        //  URL
    menu_sys: String,        //    
    menu_parent: String,     //    
    menu_icon: String,       //    
    menu_sort: Number,       //   
    menu_status: Number      //     1:  ,2:  
}, {
    collection: 'tb_menu_info'
});

exports.Menu = mongoose.model('menu', MenuSchema);

​
キャラクターが一つあります.メニュー関連表tb_.role_menuinfoは以下の通りです
var roleMenuSchema = new Schema({
    role_id:{type:Schema.Types.ObjectId,ref:'role'},
    menu_id:[{type:Schema.Types.ObjectId,ref:'menu'}]
},{
    collection:'tb_role_menu_info'
});
exports.RoleMenu = mongoose.model('roleMenu',roleMenuSchema);
今はキャラクターIDを使って、対応メニューの詳細を調べます.ポプラで下記のように調べられます.
function getMenusByRoleId(roleId){
    //  query  
    var query = RoleMenuModel.find({});

    //    ID  
    query.where('role_id',roleId);

    //   menu_id   menu  
    query.populate('menu_id');

    //    ID    
    query.sort({'menu_id':1});

    //    
    query.exec().then(function(result){
        console.log(result);
    }).catch(function(err){
        console.log(err);
    })
}
これは基本的にはクエリー、並べ替えなどのテーブルクエリに対する基本的な需要が実現されていることが分かります.
でも今の問題は、tb_を使うということです.menuinfoの中のmenu_sortフィールドで検索結果を並べ替えて、どうやって操作しますか?
問題が解決する
monogoogleのpopulate文書を読むと、populateメソッドのパラメータは並べ替えフィールドを指定でき、次のように調整されます.コードは以下の通りです.
function getMenusByRoleId(roleId){
    //  query  
    var query = RoleMenuModel.find({});

    //    ID  
    query.where('role_id',roleId);

    //   menu_id   menu  
    // path:           ;options         ,         ,  menu_sort    
    query.populate({path:'menu_id',options:{sort:{'menu_sort':1}}});

    //    ID    
    query.sort({'menu_id':1});

    //    
    query.exec().then(function(result){
        console.log(result);
    }).catch(function(err){
        console.log(err);
    })
}
このようにして、問題は解決されました.