两个集合mongodb之间的关系

Relation between two collection mongodb

本文关键字:mongodb 之间 关系 集合 两个      更新时间:2023-09-26

我的mongodb库中有两个集合:Category和Book

js 类别

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var categoryModel = new Schema({
  catName: String,
  menuKey: String
});
module.exports = mongoose.model('Category', categoryModel);

和书.js

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var bookModel = new Schema({
  title: String,
  author: String,
  category: String ,
  summary: String ,
  cover: String ,
  price: Number,
  qte: Number,
});
module.exports = mongoose.model('book', bookModel);

可以添加:

var category=require('./category.js')

并重新包装这条线路:

类别:字符串,

通过

类别:[类别],

这里是满足您需求的解决方案。

//category.js
    var mongoose = require("mongoose");
    var Schema = mongoose.Schema;
    var categoryModel = new Schema({
      catName: String,
      menuKey: String
    });
    module.exports = mongoose.model('Category', categoryModel);
    //book.js
    var mongoose = require("mongoose");
    var Schema = mongoose.Schema;
    var bookModel = new Schema({
      title: String,
      author: String,
      category: [{ type: Schema.Types.ObjectId, ref: 'Category' }],
      summary: String ,
      cover: String ,
      price: Number,
      qte: Number,
    });
    module.exports = mongoose.model('book', bookModel);

category: {type: mongoose.Schema.Types.ObjectId, ref: 'Category'}

您不想这么做。要使用ref关键字指示关系,可以使用该关键字引用另一个集合中的Schema.ObjectId

来自猫鼬的官方填充文档:

var mongoose = require('mongoose')
  , Schema = mongoose.Schema
var personSchema = Schema({
  _id     : Number,
  name    : String,
  age     : Number,
  stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});
var storySchema = Schema({
  _creator : { type: Number, ref: 'Person' },
  title    : String,
  fans     : [{ type: Number, ref: 'Person' }]
});
var Story  = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);

在您的案例中,您会有一个引用CategoryBook模型。