【问题标题】:Node.js - Mongoose - How should I assign multiple Many-to-One relationships in this case?Node.js - Mongoose - 在这种情况下,我应该如何分配多个多对一关系?
【发布时间】:2015-05-20 13:07:44
【问题描述】:

在这种情况下,我需要分配多个多对一关系,如下所示:

var portfolioSchema = new Schema({
    volatility         :  Number,
    bonds              :  {
        percentage          :  { type: Number, default: 0.6 },
        USA                 :  {
            percentage           :  { type: Number, default: 0.7 },
            treasury             :  {
                percentage            :  { type: Number, default: 0.4 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            municipal            :  {
                percentage            :  { type: Number, default: 0.2 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            corporate            :  {
                percentage            :  { type: Number, default: 0.4 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            }
        },
        international       :  {
            percentage           :  { type: Number, default: 0.3 },
            developed            :  {
                percentage            :  { type: Number, default: 0.7 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            emergent        :  {
                percentage            :  { type: Number, default: 0.3 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            }
        }
    },
    stocks          :  {
        percentage          :  { type: Number, default: 0.4 },
        USA                 :  {
            percentage           :  { type: Number, default: 0.7 },
            largeCaps            :  {
                percentage            :  { type: Number, default: 0.4 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            mediumCaps           :  {
                percentage            :  { type: Number, default: 0.4 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            smallCaps            :  {
                percentage            :  { type: Number, default: 0.2 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            }
        },
        international       :  {
            percentage           :  { type: Number, default: 0.3 },
            developed            :  {
                percentage            :  { type: Number, default: 0.7 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            },
            emergent        :  {
                percentage            :  { type: Number, default: 0.3 },
                securities            :  [ { type: ObjectId, ref: 'Security' } ]
            }
        }
    },
    _goal           :  { type: ObjectId, ref: 'Goal' }
});

var securitySchema = new Schema({
    name               :  { type: Date, required: true },
    avgReturn          :  Number,
    avgRisk            :  Number,
    percentage         :  Number
});

但是,在我看来,简单地使用 Array 数据类型而不是 [ { type: ObjectId, ref: 'Security' } ] 会更容易。

我不确定我应该做什么。任何人都会知道执行此操作的适当方法吗?谢谢!

【问题讨论】:

  • Array 数据类型是什么?为什么你认为它与[] 数据类型不同?
  • 我认为没有什么不同。我的疑问是我应该只使用Array 还是[ { type: ObjectId, ref: 'Security' } ]

标签: mongoose


【解决方案1】:

你不应该在猫鼬模式中写出Array这个词。这是一个相关的答案。 How to define object in array in Mongoose schema correctly with 2d geo index

因此,您的问题的简短回答是:使用[ { type: ObjectId, ref: 'Security' } ]

【讨论】:

  • 对不起,您说的相关答案对我没有帮助。它建议改用Arrays...为什么建议使用[ { type: ObjectId, ref: 'Security' } ]?你能说得更具体点吗?
【解决方案2】:

如果您的数组将仅由您的 Security 对象组成,您应该使用 [ { type: ObjectId, ref: 'Security' } ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多