我希望得到一些关于做一些MongoDB数据设计的反馈。我之前从未真正使用它,所以如果我的设计看起来很疯狂,请告诉我。
我有一个用户概念和用户执行的活动。需要为用户及其执行的活动提供地址,并且他们执行的活动是该用户独有的。由于活动永远不会重叠,地址也不应该重叠。
我的初始数据结构如下所示:
User : {
# User data,
address : {
# address data
},
address : {
# address data,
home : true
},
activity : {
# activity data,
_address_id: #referenced address within user
},
activity : {
# activity data,
_address_id: #referenced address within user
},
}
假设活动可以在家中进行。
有更好的方法吗?我应该只在活动和用户中嵌入地址吗?我应该从用户模型中完全删除它吗?
这一切都在使用Mongoid的Rails应用程序中聚集在一起。
答案 0 :(得分:1)
您的数据结构非常好 - 面向文档的数据库应该像这样使用。你不应该重复每个活动中的地址,因为你最终会浪费空间。
User : {
# User data,
address_<id> : {
# address data
},
address_<id> : {
# address data,
home : true
},
activity : {
# activity data,
_address_id: #referenced address within user
},
activity : {
# activity data,
_address_id: #referenced address within user
},
}
您需要照顾两件事:
1.不要为单个活动检索整个文件
2.确保文档不超过最大大小(或重新编译)