繁体   English   中英

两个集合之间的关系mongodb

[英]Relation between two collection mongodb

我的mongodb库中有2个收藏集:Category和Book

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: 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关键字指示关系,您可以使用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);

就您而言,您将有一个Book模型引用Category

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM