DBRef:

MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link)。内嵌比较好理解,就是字段内容是个数组,数组内再包含文档,而我们今天介绍的是另一种,称为链接DBRef。由于MongoDB对单个文档(document)有大小16M限制,设计时也要将这个限制纳入考虑。

DBRef接收主要3个参数:

  • collection: 指定原始数据所在的集合
  • id: 指定引用文档的id
  • database: 指定所引用数据库的名称

示例:

创建people集合:

db.people.insert({name: "Sky", age: "20", "dep": "CSL"})
db.people.insert({name: "Bill", age: "22", "dep": "CSL"})

创建DBRef:

db.deps.insert({name: "CSL", num: 15, people: [ DBRef("people", ObjectId("59b51b36a36f6ee8c75b0f68"), "test"), DBRef("people", ObjectId("59b51b44a36f6ee8c75b0f69"), "test")]})

那么如何引用呢?

db.deps.findOne({"name": "CSL"}).people[0].fetch()

db.deps.findOne({"name": "CSL"}).people[1].fetch()

MongoDB 学习笔记之 DBRef的更多相关文章

  1. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  2. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  3. MongoDB 学习笔记(原创)

    MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...

  4. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  5. MongoDB学习笔记(转)

    MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...

  6. 【转】MongoDB学习笔记(查询)

    原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...

  7. MongoDB学习笔记(六)--复制集+sharding分片 && 总结

    复制集+sharding分片                                                               背景 主机 IP 服务及端口 Server A ...

  8. MongoDB学习笔记(五)--复制集 && sharding分片

    主从复制                                                                                       主从节点开启 主节 ...

  9. MongoDB学习笔记(四)--索引 && 性能优化

    索引                                                                                             基础索引 ...

随机推荐

  1. POJ-3169 Layout (差分约束+SPFA)

    POJ-3169 Layout:http://poj.org/problem?id=3169 参考:https://blog.csdn.net/islittlehappy/article/detail ...

  2. CF - 1110 C Meaningless Operations

    题目传送门 题解: 首先根据观察,很容易发的是: x != (1<<k) - 1 时候 答案就是, 将x二进制下再最高位后的0都变成1. 然后就是考虑 x == (1<<k) ...

  3. uva 796 C - Critical Links(tarjan求桥)

    题目链接:https://vjudge.net/contest/67418#problem/C 题意:求出桥的个数并且按顺序输出 题解:所谓桥就是去掉这条边后连通块增加,套用一下模版就行. #incl ...

  4. codeforces 808 D. Array Division(二分)

    题目链接:http://codeforces.com/contest/808/problem/D 题意:有一串长度为n的数组,要求选择一个数字交换它的位置使得这串数能够分成两串连续的和一样的数组. 这 ...

  5. java-冒泡排序笔记

    //冒泡排序public class BubbleSort {    //    public static void main(String[] args) {//        // TODO 自 ...

  6. Cloudera版本的hadoop环境准备

    对于普通学习用户而言,应该先下载一个虚拟机, 推荐vmware,因为是免费的. Hadoop环境有三个版本: Apache版本(Apache基金会) CDH(cloudera公司) hdp版本(Hor ...

  7. ImageView的功能和使用

    ImageView继承自View类,它的功能用于显示图片, 或者显示Drawable对象 xml属性: src和background区别 参考:http://hi.baidu.com/sunboy_2 ...

  8. 一些简单的Linux命令(centos修改网络ip,修改主机名)

    环境:linux centos 7 vi /etc/sysconfig/network-scripts/ifcfg-enp3s0f0 可以修改网关地址,网络IP地址,子网地址等等 [root@loca ...

  9. caffe学习二:py-faster-rcnn配置运行faster_rcnn_end2end-VGG_CNN_M_1024 (Ubuntu16.04)

    本文的主要目的是学习记录. 原文连接:https://blog.csdn.net/samylee/article/details/51099508 本博客中我将对py-faster-rcnn配置运行f ...

  10. C++类的this指针详解

    这篇文章主要讲解隐式this指针的概念,以及如何使用,包含const 先直接给出一个C++Primer里的类,你可能还不能完全看懂,但是不着急,我们一点点解释 class Sales_data { s ...