【问题标题】:Mongoose one-to-one relationships with embeded documentsMongoose 与嵌入文档的一对一关系
【发布时间】:2013-11-25 14:51:49
【问题描述】:

如何在 MongoDB 中为父文档与嵌入式文档之间的一对一关系建模? Mongoose 的填充功能可以满足我的需求,但它使用的是引用,而不是实际的子文档。

【问题讨论】:

标签: mongoose


【解决方案1】:

虽然您的问题不是很清楚,但我认为这可能会对您有所帮助。 除了schema types,您还可以在另一个模式中引用您的一个模式。如下例所示:

var Comments = new Schema({
    title     : String
  , body      : String
  , date      : Date
});

var BlogPost = new Schema({
    author    : ObjectId
  , title     : String
  , body      : String
  , date      : Date
  , comments  : [Comments] //Here is the Embedded schema
  , meta      : {
        votes : Number
      , favs  : Number
    }
});

【讨论】:

  • 这不是OP所要求的一对一关系,因此它不能解决OP提出的问题。但是,这是在 mongoose 的子文档中实现模式的唯一方法。
【解决方案2】:

Mongoose 不支持具有完整验证/挂钩功能集的 Embedded documents in a one-to-one relationship to the parent document 的 MongoDB 功能。您可以将混合文字 JSON 对象存储在属性中,但不能将 Mongoose 功能与该 json 对象一起使用。

这是 Mongoose 4.0 的限制。开发人员声称此限制是故意的,以确保 Mongoose 的钩子功能正确执行,但用户中有很多支持实施解决方案:https://github.com/Automattic/mongoose/pull/585

【讨论】:

    猜你喜欢
    • 2016-05-01
    • 2015-10-14
    • 2012-06-08
    • 2011-09-01
    • 1970-01-01
    • 2014-11-15
    • 2020-06-12
    • 2020-09-15
    • 2015-07-17
    相关资源
    最近更新 更多