我承认......在NoSQL世界中,我缺乏很多理论概念。
我在考虑使用Java + MySQL将一些简单的应用程序移植到NodeJS + MongoDB(我找到了看起来非常酷的mongoose ORM)。
我发现的第一件事情,其中很难找到并且记录较少的内容是映射多对多关系。
我首先阅读了Mongo-DOCS:http://www.mongodb.org/display/DOCS/Schema+Design
...然后潜伏在一些现实世界的信息中,我发现很多q& a喜欢:Modeling data on a many-to-many join in Mongo?
有实现M:N的方法,很酷!但后来我读到了令我非常害怕和失望的东西:“老实说,如果你发现自己需要加入,我会选择关系数据库。”
OK!我明白了这一点但是......想象一下,我有常见的User + Roles + UserRoles多对多架构,我使用嵌入,我的意思是,我没有使用另一个表格架构来表示角色,我只使用其中包含所有角色数据的用户
我需要:
第一点是微不足道的,但第二点呢?
你会告诉我,我需要另一个表格模式“角色”,并在“用户”中存储角色数组,其中包含角色ID,但是,你会告诉我这是一个关系世界!
你告诉我,它不适合NoSQL数据库吗?那么会是什么?
答案 0 :(得分:2)
正确执行此操作的方法是查看您的用例并相应地设计数据库。
这意味着您将不得不考虑使用方案。
让我们考虑用例。
我会这样做:
这将正确满足所有要求 显然,由于非规范化,在更新/重命名角色时需要特别小心。
答案 1 :(得分:1)
您的选择是:
做出选择......