Node.js - Mongoose - 在这种情况下,我应该如何分配多个多对一关系?
Posted
技术标签:
【中文标题】Node.js - Mongoose - 在这种情况下,我应该如何分配多个多对一关系?【英文标题】:Node.js - Mongoose - How should I assign multiple Many-to-One relationships in this case? 【发布时间】: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' ]
。
【参考方案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' ]
。
【讨论】:
以上是关于Node.js - Mongoose - 在这种情况下,我应该如何分配多个多对一关系?的主要内容,如果未能解决你的问题,请参考以下文章
Node.js:如何在 mongoose.js 中执行 count 命令?
node.js + express.js:使用 mongodb/mongoose 处理会话