作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个关系数据模型,我正在考虑迁移到 MongoDB 或 CouchDB,并且我正在尝试了解查询的工作方式。假设我有两个实体,Employees 和 Projects,以及一个名为 Assignments 的多对多连接表。我想查询两个用户合作的所有项目。在 SQL 中,我可以这样做:
SELECT DISTINCT a1.project_id
FROM assignments a1, assignments a2
WHERE a1.project_id = a2.project_id
AND a1.employee_id = ?
AND a2.employee_id = ?
假设我有员工、项目和分配“文档”,我将如何在 NoSQL 中执行此操作?或者您是否会以不同方式构建文档,这将如何影响查询?
我很高兴听到有关 Mongo 的查询 API 和 Couch 的 map/reduce 方法的答案。
最佳答案
我只能在沙发上分享风景,我,嗯,偶尔放松一下。首先,在处理基于文档的系统时,您几乎总是必须故意忘记 SQL。
其次,您可以选择更改结构并将实体数量减少到不需要连接的最少数量,或者您可以使用将不同类型的文档合并到一个结果集中的 View 。
前者(重新设计)是首选方法,因为连接本质上是 nosql 的一种外来方法,因为规范化不是那里的要求。基于文档的不是关系型的。
关于MongoDB/沙发数据库 : Join a table to itself,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171036/
我是一名优秀的程序员,十分优秀!