鍍金池/ 問答/數(shù)據(jù)庫(kù)/ mongo如何聯(lián)表查詢?

mongo如何聯(lián)表查詢?

現(xiàn)在有兩張表

/*消息系統(tǒng)模型 */
        information_model : {
            name : "information_model",
            cols : {
                INFO_ID: String,                            //消息ID
                INFO_TITLE : String,                        //標(biāo)題
                INFO_CONTENT : String,                      //消息內(nèi)容
                INFO_TIME : Date,                           //消息時(shí)間
                INFO_TYPE : String                          //消息類型(消息--1、信息--2、短信--3、狀態(tài)--4、工作--5)
            }
        },
        /*消息狀態(tài)模型*/
        information_state : {
            name : "information_state",
            cols : {
                INFO_ID: String,                            //消息ID
                LOGIN_NAME: String,                         //用戶登錄名
                INFO_STATE: String,                        //狀態(tài)(未讀--0、已讀--1)
                INFO_DELETE: String                         //是否刪除(未刪除--0、已刪除--1)
            }
        },

兩表INFO_ID是相同的。
現(xiàn)在需要聯(lián)表查詢(即返回值中包括information_model中的所有字段,而且包括 information_state中的INFO_STATE字段) 該如何操作?
最好是 mongoose的示例, 感謝。!

回答
編輯回答
舊螢火

mongoose 可以關(guān)聯(lián)數(shù)據(jù)的.

information_model 表加一個(gè) information_state_info Schema 里增加:

information_state_info: {type:ObjectId, ref: "information_state" , index: true}

find 的時(shí)候

infoModel.find().populate('information_state_info',"INFO_ID LOGIN_NAME INFO_STATE INFO_DELETE").sort({INFO_ID: 1}).exec next

你的 information_state_info 就會(huì)出現(xiàn)對(duì)應(yīng)數(shù)據(jù).

但是每個(gè)數(shù)據(jù)都需要存儲(chǔ)對(duì)應(yīng)的 id.

2017年9月3日 19:15
編輯回答
孤慣

先用mongodb,請(qǐng)重新理解下mongodb的數(shù)據(jù)設(shè)計(jì)思路。并不推薦連表(除了簡(jiǎn)單的left join,其他的連表也不行)

2017年3月20日 22:16