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 建议使用
标签:String,populate,mongodb,数据库,js,mongoose,var,model,type 来源: https://blog.csdn.net/qfxlw/article/details/84991715