【发布时间】:2012-08-21 06:25:40
【问题描述】:
我承认……我在 NoSQL 世界中缺乏很多理论概念。
我正在考虑将一些使用 Java+MySQL 的简单应用程序移植到 NodeJS+MongoDB(我发现 mongoose ORM 看起来非常酷)。
我发现真正困难且文档较少的第一件事是映射多对多关系。
我首先阅读了 Mongo-DOCS:http://www.mongodb.org/display/DOCS/Schema+Design
...然后潜伏在一些真实世界的信息中,我发现了很多这样的问答:Modeling data on a many-to-many join in Mongo?
这是实现 M:N 的方法,太酷了!但后来我读到了一些让我非常害怕和失望的东西:“老实说,如果你发现自己需要连接,我只会使用关系数据库。”
好的!我明白了,但是....假设我有通用的 User + Roles + UserRoles 多对多模式,并且我使用 embedding,我的意思是,我没有为角色使用另一个表模式,我只使用包含所有角色数据的用户
我需要:
- 查询数据库中的所有用户,同时读取他们的角色数据;
- 查询数据库中刚刚可用的所有角色,例如,用于选择在用户创建中关联的角色;
第一点是微不足道的,但第二点呢?
你会告诉我我需要另一个表模式“角色”并将角色数组存储在“用户”中,其中包含角色的 ID,但随后,你会告诉我这是一个关系世界!
你是在告诉我它不适合 NoSQL 数据库吗?那么什么会是?
【问题讨论】:
-
重点是什么?要么根据 MongoDB 支持调整数据模型,要么对数据进行非规范化处理,或者执行多个查询……有什么问题?
-
如果你想更好地解释你的英语,也许能给我们一些例子,我相信我们可以为你提供更多帮助。我对用于实际描述问题的英语感到特别困惑。
标签: mongodb many-to-many nosql