1. 程式人生 > >mongodb資料庫高階技巧關聯查詢populate

mongodb資料庫高階技巧關聯查詢populate

 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  建議使用