Node.js - Mongoose - 在这种情况下我应该如何分配多个多对一关系?
Node.js - Mongoose - How should I assign multiple Many-to-One relationships in this case?
在这种情况下,我需要分配多个多对一关系,如下所示:
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' } ]
会更容易。
我不确定我应该做什么。任何人都会知道这样做的适当方法吗?谢谢!
你不应该在 mongoose 模式中写 Array
这个词。这是一个相关的答案。
How to define object in array in Mongoose schema correctly with 2d geo index
因此,对您的问题的简短回答是:使用 [ { type: ObjectId, ref: 'Security' } ]
。
如果数组仅由 Security
对象组成,则应使用 [ { type: ObjectId, ref: 'Security' } ]
.
在这种情况下,我需要分配多个多对一关系,如下所示:
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' } ]
会更容易。
我不确定我应该做什么。任何人都会知道这样做的适当方法吗?谢谢!
你不应该在 mongoose 模式中写 Array
这个词。这是一个相关的答案。
How to define object in array in Mongoose schema correctly with 2d geo index
因此,对您的问题的简短回答是:使用 [ { type: ObjectId, ref: 'Security' } ]
。
如果数组仅由 Security
对象组成,则应使用 [ { type: ObjectId, ref: 'Security' } ]
.