【问题标题】:Relation between two collection mongodb两个集合mongodb之间的关系
【发布时间】:2016-05-08 14:57:40
【问题描述】:

我的 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.js')

并替换这一行:

类别:字符串,

类别:[类别],

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

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

    //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);
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        你不想那样做。您想使用 ref 关键字来指示关系,您可以使用该关键字在另一个集合中引用 Schema.ObjectId

        来自official populate mongoose 文档:

        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 模型。

        【讨论】:

          猜你喜欢
          • 2013-03-15
          • 1970-01-01
          • 1970-01-01
          • 2017-10-18
          • 1970-01-01
          • 2021-08-27
          • 2015-08-08
          • 2021-07-25
          • 1970-01-01
          相关资源
          最近更新 更多