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": "runoob"},

"contact": "987654321",

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

"name": "Tom Benzamin"

}

address DBRef 字段指定了引用的地址文档是在 runoob 数据库下的 address_home 集合,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"

}

mongodb数据库扩展名_MongoDB 数据库引用相关推荐

  1. mongodb数据库扩展名_MongoDB权威指南

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.它的特点是高性能.易部署.易使用,存储数据非常方便. MongoDB是一个介于关系 ...

  2. mongodb数据库扩展名_MongoDB如何存储数据

    想要深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是Memeory-Mapped Files. Memeory-Mapped Files 下图展示了数据库是如何跟底层系统打交道的. ...

  3. mongodb数据库扩展名_MongoDB学习笔记:MongoDB 数据库的命名、设计规范

    第一部分,我们先说命名规范. 文档 设计约束 UTF-8 字符 不能包含 \0 字符(空字符),这个字符标识建的结尾 . 和 $ 有特殊含义,需要避免 区分大小写 键不能重复 键/值对有序 实践约束 ...

  4. mongodb数据库扩展名_MongoDB文件型数据库

    初始MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库 ...

  5. oracle 数据库名/数据库实例名[SID]/数据库域名/全局数据库名

    一.数据库名    就是在你安装oracle软件过程中创建的数据库,或者是安装完后,自己再创建的数据名称.主要用于一个oracle中安装了多个库, 他们之间的区分.一个库会在windows的服务中生成 ...

  6. 关于数据库登陆名和数据库用户名的一点点心得

    记得自己从开始编写与sql数据库相关的程序起,就一直采用sa登陆,也没有听人说过用户名和登陆名之间有什么关系,甚至都不知道这些东西,只知道sa权限很大,可以执行数据库中的所有东西,直至暑假,在看到某一 ...

  7. DB扩展名的数据库文件怎么打开:两种db数据库的打开方式

    两种db数据库的打开方式 现在桌面级的各种管理系统使用的数据库都是比较常见的类型,比如Access数据库(扩展名为mdb).xBase类数据库(扩展名为dbf),但有两种扩展名同为db的数据库,分属两 ...

  8. mongodb 字段出现次数_MongoDB数据库

    内容回顾 Xpath选择器 不要求记忆,只要混个眼熟即可 基于openpyxl模块爬取豆瓣电影 单页爬取 多页爬取 1.校验请求头里面是否有User-Agent参数 请求头里面加上即可 2.限制IP规 ...

  9. oracle系统库名,Oracle 札记之 一:数据库名,数据库实例名,数据库域名,操作系统环境变量...

    数据库名是用于区分数据库的一个内部标识,是以二进制方式存储在数据库控制文件中的参数.数据库创建之后不能再修改这个参数.数据库创建后,它被写入数据库参数文件pfile或Spfile中.格式如下: ... ...

最新文章

  1. 在场景中添加光线——在Deferred Shading引擎中添加阴影能力
  2. Windows MySQL8.0安装出错解决方案(Start Server 失败)
  3. 共同好友推荐java_【开班典礼】初雪迎初见,白色浪漫中,他们选择从此与Java相伴!...
  4. Ubuntu Linux 18.10下面安装魔法门之英雄无敌3
  5. jquery正则表达式验证:验证全是数字
  6. Linux 进程学习(四)------ sigaction 函数
  7. python二维数组换行输出_关于用python绘制二维数组的问题
  8. java 蓝桥杯算法训练 瓷砖铺放(题解)
  9. ML Mastery 博客文章翻译(二)20220116 更新
  10. ccpc中国大学生首届程序设计竞赛
  11. 破解sourceInsight4
  12. 选择本地照片之后即显示在Img中(客户体验)
  13. QPSK和16QAM调制
  14. 全网最最最详细的软件著作权申请步骤
  15. jasypt.jar 1.9.2下载,加密解密
  16. Fone Keeper Mac版,帮你轻松恢复iOS数据
  17. 英特尔第11代处理器(Intel Tiger Lake) 疑难解答 - 安装Windows 10时找不到驱动器
  18. linux环境MySQL8.0安装
  19. 宣城市高新技术企业认定补贴政策 申报流程整理分析
  20. 电商订舱哪家靠谱 广州力其

热门文章

  1. Android 5.0+(RecycleView、CardView、Palette)
  2. 何以笙箫默,一部有剧情的创意广告集?
  3. FreeImage 结合 VB6 使用技巧
  4. C# SetCursorPos用法
  5. AIR切换SDK版本时遇到的问题
  6. 新书出炉:我的视频我做主:Premiere Pro CS5实战精粹(1CD)(彩印)
  7. linux ACL应用学习
  8. 常用的C#方法【Format.CS】
  9. Linux 命令(60)—— strip 命令
  10. C++ 栈展开如何防止内存泄露