mongoose中利用populate處理嵌套的方法
前言
nodejs在使用mongdb數(shù)據(jù)庫中經(jīng)常會使用到嵌套,比如一個多級分類等。這里我使用學校-->學院-->學生來展示使用populate處理嵌套。
定義modal
在模式中,我們需要使用Schema.ObjectId來表示要指向數(shù)據(jù)在mongodb數(shù)據(jù)庫中的_id。
學校
在學校的Schema中,colleges屬性是要包含的學院的_id屬性數(shù)組。
var SchoolSchema = new Schema({
name: String,
colleges: [{
type: Schema.ObjectId,
ref: 'College'
}],
createTime: {
type: Date,
default: Date.now()
}
});
var School = mongoose.model('School', SchoolSchema);
學院
var CollegeSchema = new Schema({
name: String,
students: [{
type: Schema.ObjectId,
ref: 'Student'
}],
createTime: {
type: Date,
default: Date.now()
}
});
var College = mongoose.model('College', CollegeSchema);
學生
var StudentSchema = new Schema({
name: String,
sex: String,
age: Number,
createTime: {
type: Date,
default: Date.now()
}
});
var Student = mongoose.model('Student', StudentSchema);
查找
直接查找
查找學校并找到指向的學院
School
.find()
.populate('colleges', ['_id','name'])
.exec((err, schools) => {
if (err) {
console.log(err)
}
console.log(schools)
})
populate的第一個參數(shù)是學校表中需要指向?qū)W院表的屬性,即colleges;第二個參數(shù)為要在學院中查找的屬性。如果不填寫第二個參數(shù),則默認全都查出。
這樣查找出的結(jié)果中,學院的學生屬性是該學院包含的學生的_id屬性。如果需要都查找出來需要使用嵌套populate。
嵌套
School
.find()
.populate({
path: 'colleges',
select: ['_id', 'name'],
// model: 'College',
populate: {
path: 'students',
select: ['_id', 'name']
// model: 'Student'
}
})
.sort({
createTime: -1
}).exec(function(err, schools) {
if (err) {
console.log(err)
}
});
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Node.js內(nèi)置模塊events事件監(jiān)聽發(fā)射詳解
這篇文章主要為大家介紹了Node.js內(nèi)置模塊events事件監(jiān)聽發(fā)射詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
node.js中的buffer.Buffer.isBuffer方法使用說明
這篇文章主要介紹了node.js中的buffer.Buffer.isBuffer方法使用說明,本文介紹了buffer.Buffer.isBuffer的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12
Mac OS X 系統(tǒng)下安裝和部署Egret引擎開發(fā)環(huán)境
之前的文章,我們已經(jīng)介紹了Windows 系統(tǒng)下安裝和部署Egret的開發(fā)環(huán)境,那么,這篇文檔中,我們主要介紹在Mac環(huán)境中安裝Egret以及部署2014-09-09
nodejs使用express創(chuàng)建一個簡單web應用
這篇文章主要介紹了nodejs使用express創(chuàng)建一個簡單web應用的相關(guān)資料,需要的朋友可以參考下2017-03-03

