mongodb資料庫高階技巧關聯查詢populate
阿新 • • 發佈:2018-12-29
ArticleModel.find({}).populate('cid').populate('author_id').exec(function(err,docs){
console.log(docs);
})
popular裡放外來鍵,exec關聯起來,好像是這麼理解的,第一回接觸這種主鍵外來鍵,有點蒙
var mongoose=require('./db.js'); var UserSchema = new mongoose.Schema({ username : { type: String, unique: true }, password:String, name:String, age:Number, sex:String, tel:Number, status:{ type:Number, default:1 } }); module.exports=mongoose.model('User',UserSchema,'user');
// article.js 文章表中cid是ArticleCate的外來鍵,author_id是user表的外來鍵 var mongoose=require('./db.js'); var Schema=mongoose.Schema; var ArticleSchema = new Schema({ title:{ type: String, unique: true }, cid : { type: Schema.Types.ObjectId, ref:"ArticleCate" //cid和 文章分類建立關係。哪個表是外來鍵就放在哪個表 model }, /*分類 id*/ author_id:{ type: Schema.Types.ObjectId , ref:"User" //author_id和 使用者表建立關係。 model }, /*使用者的id*/ author_name:{ type:String }, descripton:String, content : String }); module.exports=mongoose.model('Article',ArticleSchema,'article');
var mongoose=require('./db.js');
var ArticleCateSchema = new mongoose.Schema({
title : { type: String, unique: true },
descripton:String,
addtime:{
type:Date
}
});
module.exports=mongoose.model('ArticleCate',ArticleCateSchema,'articlecate');
//注意使用 populate需要引入用到的model var ArticleCateModel=require('./model/articlecate.js'); var ArticleModel=require('./model/article.js'); var UserModel=require('./model/user.js'); //文章表和 分類表的關聯 // ArticleModel.find({}).populate('cid').exec(function(err,docs){ // console.log(docs); // }) //三個表關聯 ArticleModel.find({}).populate('cid').populate('author_id').exec(function(err,docs){ console.log(docs); }) // ArticleModel.aggregate 建議使用