Mongodb多表查询

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: Mongodb多表查询 var a={value:"1"}    var b={value:"2"}    var c={value:"9"}    var d={value:"10"}    db.A.save(a)    db.A.save(b)          db.A.save(c)     db.A.save(d)    db.A.find()       
Mongodb多表查询

var a={value:"1"}  
 var b={value:"2"}  
 var c={value:"9"}  
 var d={value:"10"}  
 db.A.save(a)  
 db.A.save(b)        
 db.A.save(c)   
 db.A.save(d)  
 db.A.find()       
{ "_id" : ObjectId("53ab8b45a0f7f5ae1a2ed651"), "value" : "1" }
{ "_id" : ObjectId("53ab8b45a0f7f5ae1a2ed652"), "value" : "2" }
{ "_id" : ObjectId("53ab8b45a0f7f5ae1a2ed653"), "value" : "9" }
{ "_id" : ObjectId("53ab8b45a0f7f5ae1a2ed654"), "value" : "10" }

var Ba={Apid:[new DBRef('A',ObjectId("53ab8b45a0f7f5ae1a2ed652"))],value:3}                        
 db.B.save(Ba)  
 var Ba={Apid:[new DBRef('A',ObjectId("53ab8b45a0f7f5ae1a2ed652"))],value:4}  
 db.B.insert(Ba)                                                              
 var Ba={Apid:[new DBRef('A',ObjectId("53ab8b45a0f7f5ae1a2ed652"))],value:7}  
 db.B.insert(Ba)                                                              
 var Ba={Apid:[new DBRef('A',ObjectId("53ab8b45a0f7f5ae1a2ed652"))],value:8}  
 db.B.insert(Ba)                                                              
 db.B.find()  
{ "_id" : ObjectId("53ab8c57a0f7f5ae1a2ed655"), "Apid" : [ DBRef("A", ObjectId("
53ab8b45a0f7f5ae1a2ed652")) ], "value" : 3 }
{ "_id" : ObjectId("53ab8c57a0f7f5ae1a2ed656"), "Apid" : [ DBRef("A", ObjectId("
53ab8b45a0f7f5ae1a2ed652")) ], "value" : 4 }
{ "_id" : ObjectId("53ab8c57a0f7f5ae1a2ed657"), "Apid" : [ DBRef("A", ObjectId("
53ab8b45a0f7f5ae1a2ed652")) ], "value" : 7 }
{ "_id" : ObjectId("53ab8c57a0f7f5ae1a2ed658"), "Apid" : [ DBRef("A", ObjectId("
53ab8b45a0f7f5ae1a2ed652")) ], "value" : 8 }

var Ca={Bpid:[new DBRef('B',ObjectId("53ab8c57a0f7f5ae1a2ed656"))],value:5}                        
 db.C.save(Ca)                                                                
 var Ca={Bpid:[new DBRef('B',ObjectId("53ab8c57a0f7f5ae1a2ed656"))],value:6}  
 db.C.save(Ca)                                                                
 db.C.find()  

{ "_id" : ObjectId("53ab8cb1a0f7f5ae1a2ed659"), "Bpid" : [ DBRef("B", ObjectId("
53ab8c57a0f7f5ae1a2ed656")) ], "value" : 5 }
{ "_id" : ObjectId("53ab8cb1a0f7f5ae1a2ed65a"), "Bpid" : [ DBRef("B", ObjectId("
53ab8c57a0f7f5ae1a2ed656")) ], "value" : 6 }

目前为止3个collection 的关系已经建成。

查询:

> var a = db.B.findOne({"value":4})
> a.Apid.forEach(function(ref){printjson(db[ref.$ref].findOne({"_id":ref.$id}));
})
{ "_id" : ObjectId("53ab8b45a0f7f5ae1a2ed652"), "value" : "2" }
>

> db.B.findOne().Apid[0].$id
ObjectId("53ab8b45a0f7f5ae1a2ed652")
> db.A.findOne({"_id":db.B.findOne().Apid[0].$id})
{ "_id" : ObjectId("53ab8b45a0f7f5ae1a2ed652"), "value" : "2" }
>

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
NoSQL MongoDB Python
mongodb使用like模糊查询
mongodb使用like模糊查询
1355 0
|
SQL 存储 分布式计算
【收藏】MongoDB 常用查询语句汇总
【收藏】MongoDB 常用查询语句汇总
1458 0
|
3月前
|
NoSQL MongoDB
MongoDB入门-MongoDB的CURD语句练习
这篇文章提供了MongoDB的CURD操作的练习,涵盖了插入、查询、更新和删除数据的基本命令,并通过具体示例展示了如何在MongoDB中执行这些操作。
46 2
|
NoSQL C# 数据库
使用c#对MongoDB进行查询(1)
1.BsonDocument对象     在MongoDB.Bson命名空间下存在一个BsonDocument类,它是MongoDB的文档对象,代表着MongoDB中不规则数据一条条实体模型。可以使用BsonDocument对不规则数据进行操作,这个类型继承了IEnumberable类,也就是说又将...
2449 0
|
7月前
|
NoSQL MongoDB
mongodb分组查询
mongodb分组查询
|
存储 NoSQL 关系型数据库
MongoDB-索引
什么是索引 • 索引就相当于字典中的目录(拼音 / 偏旁部首手) • 有了目录我们就能通过目录快速的找到想要的结果 • 但是如果没有目录(拼音 / 偏旁部首手), 没有索引 • 那么如果想要查找某条数据就必须从前往后一条一条的查找 • 所以, 索引就是用于提升数据的查询速度的
60 0
|
SQL NoSQL JavaScript
Mongodb 的多表查询讲解|学习笔记
快速学习 Mongodb 的多表查询讲解
|
存储 NoSQL MongoDB
MongoDB:4-MongoDB的索引和查询分析(explain)
MongoDB:4-MongoDB的索引和查询分析(explain)
1022 0
|
缓存 NoSQL MongoDB
NoSQLBooster for MongoDB 中跨库关联查询
使用 MongoDB 是我们常常会遇到一些特殊的需求需要跨库关联查询,比如订单明细缺商品重量需要补商品重量,而商品重量数据又在商品库中,这事就需要跨库关联操作,示例代码如下: // 使用 order 库,注意语句后面不要加分号 use order var count = ; db.order_detail.find({"store_code":"110"}).forEach(function(_order){ var item = db.getSiblingDB("goods").item.findOne({"barcode":_order.barcode}); if(it
838 0
|
SQL 缓存 NoSQL
MongoDB-SQL优化
本文主要讲述了MongoDB的SQL优化相关的几个知识点:1)查询优化器原理;2)执行计划解析;3)性能排查手段;4)读写优化
4380 0