mongoose集合关联查询

下载mongoose

npm i mongoose 

连接数据库

var mongoose=require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/articles',function(err){
    if(!err){
        console.log('数据库连接成功');
    }
})

module.exports=mongoose

一共有三个集合,分别是用户集合、文章集合、文章分类集合

用户集合

var mongoose=require('./Conn')

var UserSchema=new mongoose.Schema({
    Username:{
        type:String,
        unique:true
    },
    age:Number,
    sex:String,
    status:{
        type:Number,
        default:1
    }
})
module.exports=mongoose.model('User',UserSchema,'user')

文章集合

var mongoose=require('./Conn')
var Schema = mongoose.Schema;
var ArticleSchema=new Schema({
    title:{
        type:String,
        unique:true
    },
    cid:{
       type:Schema.Types.ObjectId,
       ref:'ArticleCate' 
    },
    author_id:{
        type:Schema.Types.ObjectId,
        ref:'User'
    },
    descripton: String,
    content: String
})

module.exports=mongoose.model('Article',ArticleSchema,'article')

文章分类集合

var mongoose=require('./Conn')
var ArticleCateSchema=new mongoose.Schema({
    title:{
        type:String,
        unique:true
    }
})
module.exports=mongoose.model('ArticleCate',ArticleCateSchema,'articleCate')

分别在里面添加几条数据,然后进行正向查询和反向查询

正向查询

// 正向查询
router.get('/cate',async function(req,res){
//查询关联的文章分类和用户分类
  var d=await article.find().populate('cid').populate('author_id')
  res.json({d})
})

查询出来的数据如下(数据是随便填写的)

mongoose集合关联查询_第1张图片

 反向查询

router.get('/fan',async function(req,res){
  var cid=mongoose.Types.ObjectId('62317ab2d1883d924482df61')
//id是文章分类里面数据的id
  var r=await article.find({'cid':cid})
  res.json({r})
})

查询的结果如下

mongoose集合关联查询_第2张图片

 

你可能感兴趣的:(mongoose,mongodb,node.js,数据库)