MongoDB中级---->关联多表查询
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.
- ^_^[root@:/usr/local/mongodb/bin]#./mongo
- MongoDB shell version: 1.8.2
- connecting to: test
- > var a = {name:"C++"}
- > db
- test
- > db.language.save(a)
- > db.language.find()
- { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
- > var b = {name:"javascript"}
- > db.language.save(b)
- > db.language.find()
- { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
- { "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
- > lan = {name:"obj1",computer:[new DBRef('language',a._id)]}
- {
- "name" : "obj1",
- "computer" : [
- {
- "$ref" : "language",
- "$id" : ObjectId("4da32c897d2de864e0448e06")
- }
- ]
- }
- > lan.computer[0]
- { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") }
- > lan.computer[0].fetch()
- { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
- > db.language.insert(lan)
- > db.language.find()
- { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
- { "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
- { "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1", "computer" : [ { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") } ] }
- > db.language.findOne({name:"obj1"}).computer[0].fetch()
- { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
- > lan2 = {name:"obj2",computer:[new DBRef('language',b._id)]}
- {
- "name" : "obj2",
- "computer" : [
- {
- "$ref" : "language",
- "$id" : ObjectId("4da32cb17d2de864e0448e07")
- }
- ]
- }
- > db.language.insert(lan2)
- > db.language.find()
- { "_id" : ObjectId("4da32c897d2de864e0448e06"), "name" : "C++" }
- { "_id" : ObjectId("4da32cb17d2de864e0448e07"), "name" : "javascript" }
- { "_id" : ObjectId("4da33b487d2de864e0448e08"), "name" : "obj1", "computer" : [ { "$ref" : "language", "$id" : ObjectId("4da32c897d2de864e0448e06") } ] }
MongoDB中级---->关联多表查询的更多相关文章
- Hibernate使用原生SQL语句进行无关联多表查询
背景:有两个表:CpCg与CpGg需要进行多表查询 因为CpGg表设计到与另外的表也有联系,因此师兄没有关联此两个表,只是用字段进行逻辑关联,CpGg表的cp字段与CpCg表的id字段逻辑关联
- Mongoose中的关联表查询 && 聚合查询
注:阅读此篇文章,需要有一定的Mongo基础.基本的不会再重复介绍. 例: 有两张表,一张是博客列表,另外一张是博客的标签表.现在我们要做两张表的插入和关联查询. 创建两张表的Schema 主表bl ...
- 【Mongodb】---关联表查询population
Population MongoDB是非关联数据库.但是有时候我们还是想引用其它的文档.这就是population的用武之地. Population是从其它文档替换文档中的特定路径.我们可以迁移一个单 ...
- NodeJs操作MongoDB之多表查询($lookup)与常见问题
NodeJs操作MongoDB之多表查询($lookup)与常见问题 一,方法介绍 aggregate()方法来对数据进行聚合操作.aggregate()方法的语法如下 1 aggregate(ope ...
- MyBatis实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- MyBatis学习总结(五)——实现关联表查询(转载)
本文转载自:http://www.cnblogs.com/jpf-java/p/6013516.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数 ...
- MyBatis入门学习教程-实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- MyBatis学习总结(五)——实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- MyBatis学习总结(五)——实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
随机推荐
- Globalization Guide for Oracle Applications Release 12
Section 1: Overview Section 2: Installing Section 3: Configuring Section 4: Maintaining Section 5: U ...
- obj-c中-fobjc-arc-exceptions的解释
在开启ARC之后正常情况下一切和内存有关的申请和释放操作皆不用你关心了,ARC全全帮你包办了.但是还有极少数的情况下,编译器无法为你生成合适的ARC额外代码,比如obj-c异常就是这么一个例子. 话句 ...
- 属性动画基础之ValueAnimator
概述 属性动画是谷歌在android3.0(API level 11)时候给我们带来了属性动画,真正意义上带来了"动画",以前的帧动画也就4中效果的组合(旋转.淡入淡出.放大缩小. ...
- oo修仙之路
写在前面: 之前听说过oo这门课的威力,计院全体修仙现场的图也被转了不知多少遍,然而自己不亲身经历就不知这门课的难度所在.每次debug时耳边总会想起三国杀里面周瑜的话"挣扎吧,在血和暗的深 ...
- MapReduce编程模型详解(基于Windows平台Eclipse)
本文基于Windows平台Eclipse,以使用MapReduce编程模型统计文本文件中相同单词的个数来详述了整个编程流程及需要注意的地方.不当之处还请留言指出. 前期准备 hadoop集群的搭建 编 ...
- spring boot + mybatis + druid配置实践
最近开始搭建spring boot工程,将自身实践分享出来,本文将讲述spring boot + mybatis + druid的配置方案. pom.xml需要引入mybatis 启动依赖: < ...
- c语言 基本运算
计算机的基本能力就是计算,所以一门程序设计语言的计算能力是非常重要的.C语言之所以无所不能,是因为它不仅有丰富的数据类型,还有强大的计算能力.C语言一共有34种运算符,包括了常见的加减乘除运算.这讲就 ...
- JavaScript中对象数组 根据某个属性值进行排序
将下列对象数组,通过工资属性,由高到低排序 var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, ge ...
- 【CloverETL培训】题目
具体要求: 导入: 1.在CRM中,创建相应物理表,存储Follow/Binding记录.openid作为逻辑主键 2.Follow/Binding导入相互不影响,一个失败另外一个继续执行 3.Fol ...
- Day4_生成器_三元表达式_列表解析_生成器表达式
生成器:在函数内部包含yield关键,那么该函数执行的结果就是生成器. 生成器就是迭代器. def func(): print('first') yield 111111 print('second' ...