【问题标题】:understanding mongoose [Schema.Types.Mixed]了解猫鼬 [Schema.Types.Mixed]
【发布时间】:2013-05-08 03:49:07
【问题描述】:

是否正确定义了以下架构或writing 是否需要 writing: [Schema.Types.Mixed] writing: [{}]

也就是说,如果您有一个字典数组 - [{},{},{}] - 除非您创建另一个架构并嵌入它,否则无法预定义内部结构。这是对文档的正确解释吗?

http://mongoosejs.com/docs/schematypes.html

var blogSchema = new mongoose.Schema({
  title:  String,
  writing: [{
        post: String,
        two: Number,
        three : Number,
        four  : String,
        five : [{  a: String,
                    b : String,
                    c  : String,
                    d: String,
                    e: { type: Date, default: Date.now }, 
                }]
  }],
});

谢谢。

【问题讨论】:

    标签: node.js mongodb schema mongoose


    【解决方案1】:

    该架构很好。在数组模式元素中定义对象被隐式视为其自己的Schema 对象。因此,它们将拥有自己的 _id 字段,但您可以通过显式定义架构并禁用 _id 选项来禁用它:

    var blogSchema = new mongoose.Schema({
        title: String,
        writing: [new Schema({
            post: String,
            two: Number,
            three : Number,
            four  : String,
            five : [new Schema({ 
                a: String,
                b: String,
                c: String,
                d: String,
                e: { type: Date, default: Date.now }, 
            }, {_id: false})]
        }, {_id: false})],
    });
    

    【讨论】:

    • 好的。这种“隐式模式”是一个很大的见解。谢谢。这是否意味着我应该使用 .populate() 来处理这些。我一直在努力从数组中的字典中获取信息。
    • @cathy.sasaki 不,这是嵌入式对象的模式。只有当您的架构明确包含对另一个集合(模型)的 ObjectId 引用时,您才使用 populate
    • @JonnyHK 知道了。您是 mongodb 的专家,您有推荐的特定书籍吗?或者你只是对文档很差?我正在努力为这方面的知识奠定基础。
    • @cathy.sasaki 我想我开始阅读this book 的第一版。它提供了很好的理解基础。还有免费的Little MongoDB Book
    • 这似乎与 Mongoose 的关系比与 Mongo 的关系更大。我发现 Mongoose Docs 有很多不足之处。有没有关于猫鼬的书?
    猜你喜欢
    • 2020-10-29
    • 2021-05-03
    • 2013-06-25
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2016-04-28
    相关资源
    最近更新 更多