MongoDB 数据库引用

在上一章节MongoDB关系中我们提到了MongoDB的引用来规范数据结构文档。

MongoDB 引用有两种:

手动引用(Manual References)

DBRefs

DBRefs vs 手动引用

考虑这样的一个场景,我们在不同的集合中 (address_home, address_office, address_mailing, 等)存储不同的地址(住址,办公室地址,邮件地址等)。

这样,我们在调用不同地址时,也需要指定集合,一个文档从多个集合引用文档,我们应该使用 DBRefs。

使用 DBRefs

DBRef的形式:

{ $ref : , $id : , $db : }

三个字段表示的意义为:

$ref:集合名称

$id:引用的id

$db:数据库名称,可选参数

以下实例中用户数据文档使用了 DBRef, 字段 address:

{

"_id":ObjectId("53402597d852426020000002"),

"address": {

"$ref": "address_home",

"$id": ObjectId("534009e4d852427820000002"),

"$db": "w3cschoolcc"},

"contact": "987654321",

"dob": "01-01-1991",

"name": "Tom Benzamin"

}

address DBRef 字段指定了引用的地址文档是在 address_home 集合下的 w3cschoolcc 数据库,id 为 534009e4d852427820000002。

以下代码中,我们通过指定 $ref 参数(address_home 集合)来查找集合中指定id的用户地址信息:

>var user = db.users.findOne({"name":"Tom Benzamin"})

>var dbRef = user.address

>db[dbRef.$ref].findOne({"_id":(dbRef.$id)})

以上实例返回了 address_home 集合中的地址数据:

{

"_id" : ObjectId("534009e4d852427820000002"),

"building" : "22 A, Indiana Apt",

"pincode" : 123456,

"city" : "Los Angeles",

"state" : "California"

}

java mongodb 使用场景_MongoDB 数据库引用相关推荐

  1. java mongodb 使用场景_mongodb使用场景一般是什么?mongodb有哪些基本命令?

    此前我们已经充分了解过了mongodb的原理及各种概念,你们知道一般在什么场景下才会使用mongodb吗?下面通过文章来了解一下吧. 一.mongodb基本命令 1).数据库切换use admin; ...

  2. mongodb数据库扩展名_MongoDB 数据库引用

    MongoDB 数据库引用 在上一章节MongoDB关系中我们提到了MongoDB的引用来规范数据结构文档. MongoDB 引用有两种: 手动引用(Manual References) DBRefs ...

  3. mongodb mysql 事务_MongoDB数据库两阶段提交实现事务的方法详解 _ 蚂蚁视界

    本文实例讲述了MongoDB数据库两阶段提交实现事务的办法.分享给年夜家供年夜家参考,详细如下: MongoDB数据库中操作单个文档老是原子性的,然而,涉及多个文档的操作,通常被作为一个"事 ...

  4. mongodb 搜索速度_MongoDB数据库查询性能提高40倍的经历分享

    前言 数据库性能对软件整体性能有着至关重要的影响,本文给大家分享了一次MongoDB数据库查询性能提高40倍的经历,感兴趣的朋友们可以参考学习. 背景说明 1.数据库:MongoDB 2.数据集: A ...

  5. java mongodb 插入数据_mongoDB 插入数据 用java实现

    import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; impor ...

  6. java mongodb 查询 游标_MongoDB find()方法:查询数据

    在关系型数据库中,可以实现基于表的各种各样的查询,以及通过投影来返回指定的列,相应的查询功能也可以在 MongoDB 中实现.同时由于 MongoDB 支持嵌套文档和数组,MongoDB 也可以实现基 ...

  7. java mongodb 批量删除_MONGODB删除/新增/更改大量记录的方法

    @Indexed(expireAfterSeconds=180) private Date deletedAt; 以上代码,如果字段deletedAt有值,那么将在180秒后被MONGODB删除,如果 ...

  8. mongodb连接失败_mongodb 数据库及数据分页

    本文转载于 SegmentFault 社区作者:小小蚊子     在做自己的一个小项目时,新学习了 mongodb非关系型数据库,使用了 mongoose封装好的查询方法,包括数据库分页用到的limi ...

  9. mongodb mysql配置_mongoDB数据库原生配置

    最近小冷在工作中使用到了mongoDB数据库,所以就简单的写了个demo,和大家简单分享下,如果大家也有想分享的东西或者需要分享的东西,生活或者其他都行,可以关注小冷公众号秦川以北或者加小冷微信qxy ...

  10. java mongodb 聚合函数_MongoDB的聚合函数 Aggregate

    Aggregate的使用,有利于我们对MongoDB中的集合进行进一步的拆分. 示例: db.collection.aggregate( {$match:{x:1}, {limit:10}, {$gr ...

最新文章

  1. WINDOWS SERVER 2003从入门到精通之活动目录数据库的维护
  2. mysql主从同步 sql_mysql主从同步报错;Slave_SQL_Running: No
  3. linux下read函数缺失字节_机器人、工控机和Linux 网络编程接口能否蹭出火花?
  4. oracle exp 二进制,Oracle备份之exp自动逻辑备份(二)
  5. codesys com库_CoDeSys官方系统库在线下载,替换国内下载服务器教程
  6. java系统项目分为哪五大层次?控制层_业务_一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转...
  7. netty中的引导Bootstrap服务端
  8. ESP32 TIMER
  9. Linux kill 多余用户终端
  10. python递归函数入门教程_Python递归函数
  11. 加密解密学习--基本概念拾掇
  12. JSP购物车案例精简版-适合小白学习
  13. 斯托克斯定理,de Rham上同调习题
  14. 企业微信开发实战(二、OA审批之获取审批模版详情提交审批申请)
  15. 看一看golang的官方包:strings
  16. pwnable.kr wp passcode
  17. 网络名称以太网网络2/3修改成网络
  18. Mac中的文件如何拷贝到硬盘中?
  19. 计算机的常见故障处理实验报告,实训13 微机常见故障处理实训报告.doc
  20. iOS 苹果开发者账号--个人账号、公司账号、企业账号的区别

热门文章

  1. 关于Android项目隐藏标题栏的方法总结
  2. 如何利用ansible callback插件对执行结果进行解析
  3. nginx1.6.2编译安装
  4. 适用于中小型公司代理服务器的IPTABLES脚本
  5. 蓝桥杯 算法训练 矩阵乘法
  6. python调用adb shell命令_python(或BAT脚本)自动执行adb shell以后的命令
  7. Java关于抽象类是否可以实例化问题
  8. 关于Lambda表达式的简单理解,以及基础使用,仅限新手
  9. python3 使用冒泡排序法原理解析,简单易懂
  10. moongose模糊查询相关博客