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.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
随机推荐
- TCP连接建立系列 — 服务端接收ACK段(二)
本文主要分析:三次握手中最后一个ACK段到达时,服务器端的处理路径. 内核版本:3.6 Author:zhangskd @ csdn blog 创建新sock 协议族相关的操作函数,我们要看的是TCP ...
- The content of elements must consist of well-formed character data or markup
java 中使用dom4j解析含有特殊字符的xml文件出现了如题的错误 这个时候需要在特殊字符外面加上 <![CDATA[ /6169220648+20671/1>7+-47390045& ...
- unity 代码C#封装为dll
1 Visual studio软件打开后创建一个项目 2并选择类库类型 3编写简单的代码看看效果(发现会报错),主要是没有添加类库,以及using UnityEngine;引用空间 4添加类库,引用 ...
- R语言并行计算中的内存控制
R语言使用向量化计算,因此非常容易在集群上进行并行计算.parallel 包提供了非常方便的函数用来进行并行计算,但有一个问题是并行时对于内存中的对象会拷贝多份,因此会比较占内存,这里提供一个比较简易 ...
- java main方法执行sql语句
public static void main(String[] args) throws Exception{ String driver = "oracle.jdbc.driver.Or ...
- ExtJS中xtype 概览
基本组件: xtype Class 描述 button Ext.Button 按钮 splitbutton Ext.SplitButton 带下拉菜单的按钮 cycle Ext.CycleButton ...
- ssh三大框架集成后,jsp中采用forword标签提交时会报错的解决方案
最近这两天心烦,所以没事就做做三大框架,对于今天遇到了一个烦心的事!或许有很多开发人员对于web.xml拦截器的认识不清,出现了这样的情况 <filter> <filter-name ...
- MySQL 库名重命名
MySQL ( RENAME database olddbname TO newdbname ) 对库名的重命名上会出现一些奇怪的错误.有丢失数据的风险. 所以如何去重命名呢: 1 用mysqldu ...
- Day2_元组_字典_集合_字符编码_文件处理
元组: 作用:存多个值,元组不可变,主要用来读 age=(11,22,33,44,55) print(age[2]) #取出元组内的值 print(age[1:4]) #取出元组内的某些值 print ...
- SDL相关资料
SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏.游戏SDK.演示软件.模拟器.MPEG播放器和其他应用软件.目前支持windows,linux ...