Mat*_*vić 3 mongoose mongodb bson mean-stack
我正在为MongoDB设计我的第一个数据库,我想知道我是否正朝着正确的方向发展。
这基本上是一个剧院的模拟预订系统。在嵌套中深入2到3个层次有天生的错误吗?
以后是否会在查询中产生问题?
在这里,性能和可用性明智的最佳解决方案是什么?
我是否应该像对待预订的客户一样使用参考?
这是我到目前为止的内容:
//shows
{
_id: 2132131,
name: 'something',
screenplay: ['author1', 'author2'],
show_type: 'children',
plays: {
datetime: "O0:00:00 0000-00-00",
price: 120,
seats:
{
_id:['a', 1],
status: 'reserved',
client: 1
},
{
_id:['a', 2],
status: 'reserved',
'client:1
}
}
}
//clients
{
_id:1,
name: 'Julius Cesar',
email: 'julius@rome.com',
}
Run Code Online (Sandbox Code Playgroud)
您可能会对此发表不同意见,但让我与您分享我的观点。
首先,您的架构似乎不适用于您的用例。您很可能希望“播放”是一个数组而不是一个对象,所以:
{
"_id":2132131,
"name":"something",
"screenplay":[
"author1",
"author2"
],
"show_type":"children",
"plays":[
{
"datetime":"O0:00:00 0000-00-00",
"price":120,
"seats":[
{
"_id":[
"a",
1
],
"status":"reserved",
"client":1
},
{
"_id":[
"a",
2
],
"status":"reserved",
"client":1
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
如果我的假设是正确的,那么您现在就有了双嵌套数组,这是一种极其不切实际的方案,因为在查询或更新中不能使用多个位置运算符。
尽管大多数NoSQL人群似乎都认为,实际上只有少数有效的用例将集合嵌入到文档中。需要满足以下条件:
您会发现,没有多少情况可以满足以上所有条件。这些标准中有些是主观的,但是轻量级引用实际上并没有那么复杂。实际上,唯一的麻烦就是无法“以原子方式”修改不同集合中的文档,这并不像大多数情况下那样严重。
TL; DR:不要将嵌套数组加倍;坚持“戏剧”在一个单独的收藏
| 归档时间: |
|
| 查看次数: |
1185 次 |
| 最近记录: |