MongoDB 为每个用户重复使用一个集合
MongoDB reusing a collection for every user
我不确定 MongoDB 中的最佳设置方式。
我有两个合集 User
和 Skill
。 Skill
的集合列出了每个用户都应具备的技能。
var SkillSchema = new Schema({
name: { type: String, required: true, trim: true },
category: { type: String, required: true, trim: true }
});
mongoose.model('Skill', SkillSchema);
var UserSchema = new Schema({
_id: { type: String, required: true, trim: true },
first_name: { type: String, required: true, trim: true },
last_name: { type: String, required: true, trim: true },
email_address: { type: String, required: true, trim: true },
skills: [{
skill: { type: ObjectId, ref: 'Skill' },
count: { type: Number, default: 0 },
last_performed: { type: Date }
}]
});
mongoose.model('User', UserSchema);
我想做的是有一个技能列表,每个用户都有一个 count
属性 来显示他们执行该技能的次数,还有一个 last_performed
属性 有他们上次执行它的日期。
我的问题是,我希望每个用户的技能列表都相同,但我可以为每个用户更新他们唯一的 count
和 last_performed
属性。
我目前获得它的方式是引用技能 ID,然后在用户模式中包含 count/date。这个问题是,如果我向技能模式添加另一个技能,用户的技能数组将不会用新技能更新。我认为每次我 add/remove 一项技能时更新每个用户,以反映新技能列表,并不是执行此操作的最佳方式。
你能同步用户的技能数组以匹配技能模式吗?
将每个用户的 count/date 直接添加到技能架构中会不会更好?唯一的问题是如果有成千上万的用户,这会不会有任何性能问题,并且是否可以很容易地为每个用户按 count/date 对技能进行排序,并在不返回计数的情况下单独查询用户的技能每个用户?
干杯,
本
skills : [{ type: ObjectId, ref: 'Skill' }]
。如果您想在保存或更新时添加技能,只需将 ID 推入数组即可。
你可以填充技能数组,你可以计算技能数组。那会给你计数。
如果您在技能模型中有 last_performed
。然后您将在填充后访问它
我不确定 MongoDB 中的最佳设置方式。
我有两个合集 User
和 Skill
。 Skill
的集合列出了每个用户都应具备的技能。
var SkillSchema = new Schema({
name: { type: String, required: true, trim: true },
category: { type: String, required: true, trim: true }
});
mongoose.model('Skill', SkillSchema);
var UserSchema = new Schema({
_id: { type: String, required: true, trim: true },
first_name: { type: String, required: true, trim: true },
last_name: { type: String, required: true, trim: true },
email_address: { type: String, required: true, trim: true },
skills: [{
skill: { type: ObjectId, ref: 'Skill' },
count: { type: Number, default: 0 },
last_performed: { type: Date }
}]
});
mongoose.model('User', UserSchema);
我想做的是有一个技能列表,每个用户都有一个 count
属性 来显示他们执行该技能的次数,还有一个 last_performed
属性 有他们上次执行它的日期。
我的问题是,我希望每个用户的技能列表都相同,但我可以为每个用户更新他们唯一的 count
和 last_performed
属性。
我目前获得它的方式是引用技能 ID,然后在用户模式中包含 count/date。这个问题是,如果我向技能模式添加另一个技能,用户的技能数组将不会用新技能更新。我认为每次我 add/remove 一项技能时更新每个用户,以反映新技能列表,并不是执行此操作的最佳方式。
你能同步用户的技能数组以匹配技能模式吗?
将每个用户的 count/date 直接添加到技能架构中会不会更好?唯一的问题是如果有成千上万的用户,这会不会有任何性能问题,并且是否可以很容易地为每个用户按 count/date 对技能进行排序,并在不返回计数的情况下单独查询用户的技能每个用户?
干杯, 本
skills : [{ type: ObjectId, ref: 'Skill' }]
。如果您想在保存或更新时添加技能,只需将 ID 推入数组即可。
你可以填充技能数组,你可以计算技能数组。那会给你计数。
如果您在技能模型中有 last_performed
。然后您将在填充后访问它