`
datamachine
  • 浏览: 156824 次
社区版块
存档分类
最新评论

MongoDB的外键关联处理

    博客分类:
  • DB
阅读更多

   来源:http://stackoverflow.com/questions/29392169/populating-field-values-for-referred-documents-in-aggregate-call-in-mongoose

Mongodb本身的API需要硬编码才能实现外键关联,不够直观且难度较大,这种情况下可以用集算器来实现,下面用例子说明。

Collection UserCourseProgress记录着用户和课程的关系,其courseid字段是外键,指向Collection Course_id字段。需要统计出每门课的人数,其中课程名称需要使用Coursetitle字段。

UserCourseProgress

Course

{"userId":"u01",

"courseid":"c01",

"timespent":6000,

score:99}

{"userId":"u02",

"courseid":"c01",

"timespent":6000,

score:99}

{"userId":"u03",

"courseid":"c01",

"timespent":6000,

score:99}

{"userId":"u04",

"courseid":"c01",

"timespent":6000,

score:99}

{"userId":"u05",

"courseid":"c01",

"timespent":6000,

score:99}

{"userId":"u01",

"courseid":"c02",

"timespent":6000,

score:99}

{"userId":"u02",

"courseid":"c02",

"timespent":6000,

score:99}

{"userId":"u03",

"courseid":"c03",

"timespent":6000,

score:99}

{"_id":"c01"

"title":"Japanese159",

"description":"Japanese base",

"category":"language"}

{"_id":"c02"

"title":"Chinese200",

"description":"Chinese middle",

"category":"language"}

{"_id":"c03"

"title":"Political science 280",

"description":"Political middle",

"category":"politics"}

{"_id":"c04"

"title":"EE490",

"description":"electronic engineering hign",

"category":"Electronic"}

 

 

   集算器代码:



 

A1:连接MongoDB,连接字格式为mongo://ip:port/db?arg=value&…

         A2:统计出每门课的人数。这里使用aggregate函数从MongoDB中取数,该函数继承自mongdb,第1个参数是collection名,第2个参数是汇总表达式,遵循mongodb规范。计算结果是内存数据,如下:



 

         A3:Course中取出码表。这里使用find函数从MongoDB中取数,该函数继承自mongdb,第2个参数是过滤条件,写法遵循mongodb规范。Find的结果是游标,由于课程数量较少,因此用fetch函数将游标读入内存,结果如下:



 

         A4:使用switch函数将A3中的外键切换为A2中的记录,结果如下:



 

         A5:按对象方式访问内存,形成新的二维表,结果如下:



 

         A6:关闭mongodb连接。

  • 大小: 42.2 KB
  • 大小: 7.5 KB
  • 大小: 12.4 KB
  • 大小: 24.5 KB
  • 大小: 10.7 KB
3
3
分享到:
评论
1 楼 Long_yuan 2015-07-17  
既然用mongodb 还是赶紧丢掉sql设计范式吧

相关推荐

    MongoDB大数据处理

    MongoDB大数据处理权威指南 MongoDB大数据处理权威指南 MongoDB大数据处理权威指南

    MongoDB大数据处理权威指南

    大数据处理权威指南

    MongoDB大数据处理权威指南 中文第2版

    MongoDB大数据处理权威指南 中文第2版

    《MongoDB大数据处理权威指南(第2版)》.pdf

    《MongoDB大数据处理权威指南(第2版)》

    Mongodb实现的关联表查询功能【population方法】

    本文实例讲述了Mongodb实现的关联表查询功能。分享给大家供大家参考,具体如下: Population MongoDB是非关联数据库。但是有时候我们还是想引用其它的文档。这就是population的用武之地。 Population是从其它文档...

    mongodb数据库设计

    以mongodb的数据库设计为例,简单介绍了nosql数据库设计。

    MongoDB大数据处理权威指南 第2版

    MongoDB大数据处理权威指南 第2版,有需要的可以学习一下下。支持购买正版书籍!

    非关联数据库mongodb 的demo

    非关联数据库mongodb 的demo,

    mongoDB分片技术处理方案

    mongoDB分片技术处理方案,内容详细

    Linux安装mongodb客户端

    sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...

    MongoDB应用设计模式

    资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...

    MongoDB笔记.docx

    一、MongoDB简介 3 二、MongoDB结构 3 二、MongoDB 数据库关系型(这里并不是值关系型数据库的关系) 3 1、MongoDB一对一关系型 3 2、MongoDB一对多关系型 4 3、MongoDB多对多关系型 4 三、创建数据库(mongodb_test...

    如何安装MongoDB 如何使用MongoDB

    本课程是一套关于MongoDB应用开发的实战性教程,名为《深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)》,教程侧重于讲解MongoDB的常用特性及高级特性,从实际开发的角度出发对MongoDB...

    mongodb-linux-x86_64-4.0.18.tgz

    mv mongodb-linux-x86_64-4.0.18 mongodb 3、进入 mongodb 目录创建目录 db 和 logs cd /usr/local/mongodb mkdir db mkdir logs 4、进入到 bin 目录下,编辑 mongodb.conf 文件,内容如下: dbpath=/usr/local/...

    关于在mongoose中填充外键的方法详解

    在学习非关系型数据库mongoDB,希望能够完成数据库的CRUD,采用的是JS做的后台,因此用到了mongoose,下面这篇文章主要给大家介绍了关于在mongoose中填充外键的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,...

    SpringMongodb参考文档.docx

    Spring Data MongoDB 2.1中的新特性 5.2。Spring Data MongoDB 2.0中的新特性 5.3。Spring Data MongoDB 1.10中的新特性 5.4。Spring Data MongoDB 1.9中的新特性 5.5。Spring Data MongoDB 1.8中的新特性 5.6。...

    【BAT必备】MongoDB面试题

    【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT...

    MongoDB图形化管理工具 MongoDB Compass

    MongoDB图形化管理工具 MongoDB Compass

Global site tag (gtag.js) - Google Analytics