【发布时间】:2017-08-25 22:44:53
【问题描述】:
我以前使用 MySQL,现在对 Mongodb 很陌生。在学习阶段,我正在尝试创建一个像 LinkedIn 一样的用户配置文件。我很困惑选择在 mongodb 模式中创建一对多关系的正确方法。
上下文:用户可以拥有多个教育资格,并且具有相同的经验。这里有两种方法,我尝试将架构创建为:
示例 1:
var userSchema = new mongoose.Schema({
name: {
first: String,
middle: String,
last: String,
},
gender: { type: Number, max: 3, min: 0, default: GENDERS.Unspecified },
age: Number,
education: [{type: Schema.Types.ObjectId, ref:'Education'}],
experience: [{type: Schema.Types.ObjectId, ref:'Experience'}],
email: String
});
示例 2:
var userSchema = new mongoose.Schema({
name: {
first: String,
middle: String,
last: String,
},
gender: { type: Number, max: 3, min: 0, default: GENDERS.Unspecified },
age: Number,
education: [{type: String, detail: {
major: String,
degree: String,
grade: String,
startdate: Date,
enddate: Date,
remarks: String
}}],
experience: [{type: String, detail: {
position: String,
company: String,
dateofjoin: String,
dateofretire: String,
location: String,
responsibilities: [{type:String}],
description: String,
}}],
email: String
});
我还没有测试过第二个选项。
在编写查询以获取或添加数据时,哪个更好、更容易?有没有更好的方法来为这样的场景编写模式?
【问题讨论】:
标签: mongodb mongoose mongoose-schema