http://www.linuxidc.com/Linux/2011-08/41043.htm

DBRef is a more formal specification for creating references between documents.  DBRefs (generally) include a collection
name as well as an object id.  Most developers only use DBRefs if the collection can change from one document to the next.  If your referenced collection will always be the same, the manual references outlined above are more efficient.

  1. ^_^[root@:/usr/local/mongodb/bin]#./mongo
  2. MongoDB shell version: 1.8.2
  3. connecting to: test
  4. > var a = {name:"C++"}
  5. > db
  6. test
  7. > db.language.save(a)
  8. > db.language.find()
  9. { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
  10. > var b = {name:"javascript"}
  11. > db.language.save(b)
  12. > db.language.find()
  13. { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
  14. { "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
  15. > lan = {name:"obj1",computer:[new DBRef('language',a._id)]}
  16. {
  17. "name" : "obj1",
  18. "computer" : [
  19. {
  20. "$ref" : "language",
  21. "$id" : ObjectId("4da32c897d2de864e0448e06")
  22. }
  23. ]
  24. }
  25. > lan.computer[0]
  26. { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") }
  27. > lan.computer[0].fetch()
  28. { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
  29. > db.language.insert(lan)
  30. > db.language.find()
  31. { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
  32. { "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
  33. { "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1", "computer" : [ { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") } ] }
  34. > db.language.findOne({name:"obj1"}).computer[0].fetch()
  35. { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
  36. > lan2 = {name:"obj2",computer:[new DBRef('language',b._id)]}
  37. {
  38. "name" : "obj2",
  39. "computer" : [
  40. {
  41. "$ref" : "language",
  42. "$id" : ObjectId("4da32cb17d2de864e0448e07")
  43. }
  44. ]
  45. }
  46. > db.language.insert(lan2)
  47. > db.language.find()
  48. { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
  49. { "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
  50. { "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1", "computer" : [ { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") } ] }

MongoDB中级---->关联多表查询的更多相关文章

  1. Hibernate使用原生SQL语句进行无关联多表查询

    背景:有两个表:CpCg与CpGg需要进行多表查询 因为CpGg表设计到与另外的表也有联系,因此师兄没有关联此两个表,只是用字段进行逻辑关联,CpGg表的cp字段与CpCg表的id字段逻辑关联

  2. Mongoose中的关联表查询 && 聚合查询

    注:阅读此篇文章,需要有一定的Mongo基础.基本的不会再重复介绍. 例:  有两张表,一张是博客列表,另外一张是博客的标签表.现在我们要做两张表的插入和关联查询. 创建两张表的Schema 主表bl ...

  3. 【Mongodb】---关联表查询population

    Population MongoDB是非关联数据库.但是有时候我们还是想引用其它的文档.这就是population的用武之地. Population是从其它文档替换文档中的特定路径.我们可以迁移一个单 ...

  4. NodeJs操作MongoDB之多表查询($lookup)与常见问题

    NodeJs操作MongoDB之多表查询($lookup)与常见问题 一,方法介绍 aggregate()方法来对数据进行聚合操作.aggregate()方法的语法如下 1 aggregate(ope ...

  5. MyBatis实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  6. MyBatis学习总结(五)——实现关联表查询(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013516.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数 ...

  7. MyBatis入门学习教程-实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  8. MyBatis学习总结(五)——实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  9. MyBatis学习总结(五)——实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

随机推荐

  1. 数据包接收系列 — IP协议处理流程(二)

    本文主要内容:在接收数据包时,IP协议的处理流程. 内核版本:2.6.37 Author:zhangskd @ csdn blog 我们接着来看数据包如何发往本地的四层协议. ip_local_del ...

  2. 坚持自己的追求,迎来 “中国系统开发网” (CSDN)的专访

    坚持自己的追求,迎来 "中国系统开发网" (CSDN)的专访: 专访马根峰:海量数据处理与分析大师的中国本土程序员" http://www.csdn.net/articl ...

  3. 对于CocoaPods的简单理解,实践安装使用过程和常见问题

    (本文是自己通过其他文章进行的自我编辑和简单修改,请大家凑活看看) 一.什么是CocoaPods CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理.开发iOS项目不可避免地 ...

  4. LeetCode(67)-Rotate Array

    题目: Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the ar ...

  5. mybatis 开发环境搭建

    不说废话直接上代码,首先看下我的目录机构: 红色部分,表明你所需的jar包,已经配置文件. 创建用户表,以及插入数据. create table books(id int (11) not null ...

  6. 使用XStream是实现XML与Java对象的转换(3)--注解

    六.使用注解(Annotation) 总是使用XStream对象的别名方法和注册转换器,会让人感到非常的乏味,又会产生很多重复性代码,于是我们可以使用注解的方式来配置要序列化的POJO对象. 1,最基 ...

  7. SQL Server复制表结构和表数据生成新表的语句

    参考:http://topic.csdn.net/t/20020621/09/820025.html SELECT   *   INTO   newTableName   FROM   oldTabl ...

  8. TabBarController和其他view无法建立Relationship segue的原因

    拖拽怎么也没有那个出现,最后看sourcecode发现是那个那个viewcrontroler的XML 元素不是TabBarController.在Sourcecode里面改了一下,解决了这个问题. 总 ...

  9. Ocelot中文文档-流量控制

    感谢@catcherwong 的文章激励我最终写出了这个文档 Ocelot支持上游的请求限制,以便您的下游服务不会过载. 此功能是由GitHub上的@geffzhang添加! 非常感谢. 好了,为了让 ...

  10. android解析xml文件方法之一-----DOM

    Hello.xml文件 <dict num="219" id="219" name="219"> <key>hell ...