我知道如何使用节点,角度,表达等续集...但我只是开始使用mongoose学习平均堆栈的M部分。问题是我不知道mongodb在数据库中组织数据方面的能力。
在mongodb / mongoose中做过复杂关系的人是否可以向我展示以下内容?:
我希望看到一个简单,易于理解的SCHEMA,用于以下场景。
1)用户有很多朋友(意思是一组朋友,也是用户对象实例)。
2)用户可以参加许多活动(用户将拥有每个活动的出勤状态,即参加或拒绝)。用户还将拥有名称和用户名的属性。
3)事件可以有很多用户(每个用户都有一个出勤状态)。事件也会有一段时间的属性和地点。
几乎就是这样。再说一次,如果有人可以为此写出SCHEMA,我会非常感激,因为我正在努力理解
答案 0 :(得分:0)
没有冒犯,但让别人写你的架构并不能帮助你理解堆栈的M部分。
我真的建议你买这本书MongoDB: The Definitive Guide。
这使您可以很好地了解Mongo,还可以了解嵌入或引用文档。这实际上取决于您如何处理数据,以及数据的变化程度。
简单的猫鼬样品:
var UserSchema = new mongoose.Schema({
first_name: { type: String },
last_name: { type: String },
friends: [UserSchema],
events : [{
event_id : { type: mongoose.Schema.Types.ObjectId },
status : { type : Number}]
})
var EventSchema = new mongoose.Schema({
name : { type: String},
users : [UserSchema]
})
这是一个真实的基本示例,其中一个包含单个引用(EventSchema.users / UserSchema.friend)和类似混合解决方案的UserSchema.events,其中包含事件的id和一些基本信息。
在猫鼬中,您可以使用populate来检索相关文档。
但是我想强调一下,去买书并阅读它,这样你就可以为你的场景做出正确的选择!
答案 1 :(得分:0)
有很多方法可以实现这一目标,但这取决于您的数据库设计以及您希望如何访问数据。通常,对于群组和事件,我非常喜欢拥有一个只对用户和事件有参考的集合,以及您可能需要的额外数据。至于在mongo中存储朋友,您可以存储为用户ID引用的数组或与组/事件相同的样式。看看猫鼬和图式属性中的人口(我也不确定向人们提出挑战问题,显然你需要做的是一个很好的解决方案)