Mongoose参考简单的代码参考值?

时间:2014-08-07 12:34:06

标签: mongodb mongoose

我正在设计一个MongoDB架构来保存一个相当大/嵌套的文档。我打算尽可能多地嵌入到单个文档中,但不确定如何处理代码/查找值。例如,如果我们有一个代表“priority”的代码表,可能的值为:

  • 介质

这是我应该使用Mongoose引用的东西,并创建一个简单的文档来保持优先级,例如:

 var PrioritySchema = new Schema({
    description: String
 });

然后将使用以下内容引用它:

 var AnotherSchema = new Schema({
    name: String,
    active: Boolean,
    priority: { type: String, ref: 'Priority' }
 });

或者这是否过度杀伤?我想避免的是将这些“描述”直接存储在主/整体模型中,然后在将来的某个时间更改需求。例如,有人决定而不是“中等”,我们需要“稍微”称它。在那种情况下,我认为我会被迫做某种数据迁移?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

    var PrioritySchema = new Schema({
    description: String
 });

和这个

var AnotherSchema = new Schema({
    name: String,
    active: Boolean,
    priority: { PrioritySchema  }
 });

但如果你想要你进一步描述的内容,我会建议你这样做:

var AnotherSchema = new Schema({
        name: String,
        active: Boolean,
        priority: { type: Schema.Types.ObjectId, ref: 'Priority' } // see this : Schema.Types.ObjectId != String
     });

如果您需要将这些值作为需要使用引用的跨文档,请让它变得简单。如果由于父文档而仅存在值,则可以选择嵌入。

欲了解更多信息,请阅读: http://mongoosejs.com/docs/2.7.x/docs/embedded-documents.html

仅供参考:我曾经为此苦苦挣扎。如果您遵循嵌入所有嵌套子文档的路径,您将面临很多"为什么我无法做到这一点:'(最后我选择了参考方式,我觉得更多与之相容。embing!= referencing。