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

猜你喜欢

转载自blog.csdn.net/qfxlw/article/details/84991715