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.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
随机推荐
- HBase Canary
HBase Canary 用于检测HBase 系统的状态.它对指定表的每一个region 抓取一行,来探测失败或者延迟. hbase org.apache.hadoop.hbase.tool.Can ...
- android 资源文字ids的作用
ids.xml--为应用的相关资源提供唯一的资源id.id是为了获得xml中的对象而需要的参数,也就是Object = findViewById(R.id.id_name)中的id_name.这些值可 ...
- Android的启动过程分析(从进程和Framework的角度)-android学习之旅(98)
Android的启动过程包含从Linux加载到home程序运行的过程,如下图所示: 1.linux内核: Android是基于Linux内核的系统平台.启动时,首先通过bootloader加载LInu ...
- C++之多继承
#include <iostream> using namespace std ; class AA { public: int a ; void Say_hello(void) { co ...
- Sencha touch 2 入门 -------- DataView 显示服务器端JSON文件数据
今天学习了下DataView如何显示JSON文件数据,废话不多说,直接贴代码: 首先看下文件目录: 然后看下我们要处理的JSON文件,bookInfo.json. { "success&qu ...
- C#在PDF中如何以不同颜色高亮文本
高亮的文本有助于阅读者快速有效地获取文章关键信息.在PDF文件中,对文章的不同文本,关键词.句等进行不同颜色的文本高亮操作,可以使阅读者在阅读过程中有效地区分不同高亮颜色文本的意义.在下面的示例中,我 ...
- 1-bit and 2-bit Characters
We have two special characters. The first character can be represented by one bit 0. The second char ...
- jvm比较详尽的内存结构
JVM内存结构 2012-09-17 15:27:59 分类: Java 本文转自:http://www.blogjava.net/nkjava/archive/2012/03/14/371831. ...
- SpringMVC:数据绑定入门(二)
1.为了实现所输入的数据格式与所需要的匹配该如何做到?例如:http://localhost:8080/date1.do?date1=2018-01-01,其中输入的date1的数据类型为一个格式为& ...
- rsync+innotify做到同步式更新
innotify主要功能: 他是内核用于通知用户控件程序文件系统变化的机制. 也就是说,当服务器发生了任何的改动,内核都会知道并通知用户. rssync(做同步的)+innotify做到的就是实时的同 ...