博客
关于我
mongo笔记07( MongoDB 关系)
阅读量:498 次
发布时间:2019-03-07

本文共 1299 字,大约阅读时间需要 4 分钟。

<\?php

/**
* MongoDB 关系
*/

/**

* MongoDB 的关系表示多个文档之间在逻辑上的相互联系。
* 文档间可以通过嵌入和引用来建立联系。



  • MongoDB 中的关系可以是:
  • 1:1 (1对1)
  • 1: N (1对多)
  • N: 1 (多对1)
  • N: N (多对多)
    */

/**

* 实例
*/

/**

* 接下来我们来考虑下用户与用户地址的关系。
* 一个用户可以有多个地址,所以是一对多的关系。
* 以下是 user 文档的简单结构:



  • {
  • “_id”:ObjectId(“52ffc33cd85242f436000001”),
  • “name”: “Tom Hanks”,
  • “contact”: “987654321”,
  • “dob”: “01-01-1991”
  • }


  • 以下是 address 文档的简单结构:
  • {
  • “_id”:ObjectId(“52ffc4a5d85242602e000000”),
  • “building”: “22 A, Indiana Apt”,
  • “pincode”: 123456,
  • “city”: “Los Angeles”,
  • “state”: “California”
  • }



  • 嵌入式关系
  • 使用嵌入式方法,我们可以把用户地址嵌入到用户的文档中:


  • “_id”:ObjectId(“52ffc33cd85242f436000001”),
  • “contact”: “987654321”,
  • “dob”: “01-01-1991”,
  • “name”: “Tom Benzamin”,
  • “address”: [
  • {
  • “building”: “22 A, Indiana Apt”,
  • “pincode”: 123456,
  • “city”: “Los Angeles”,
  • “state”: “California”
  • },
  • {
  • “building”: “170 A, Acropolis Apt”,
  • “pincode”: 456789,
  • “city”: “Chicago”,
  • “state”: “Illinois”
  • }]
  • }


  • 以上数据保存在单一的文档中,可以比较容易的获取和维护数据。 你可以这样查询用户的地址:
  • >db.users.findOne({“name”:”Tom Benzamin”},{“address”:1})


  • 这种数据结构的缺点是,如果用户和用户地址在不断增加,数据量不断变大,会影响读写性能。



  • 引用式关系
  • 引用式关系是设计数据库时经常用到的方法,这种方法把用户数据文档和用户地址数据文档分开,通过引用文档的 id 字段来建立关系。


  • {
  • “_id”:ObjectId(“52ffc33cd85242f436000001”),
  • “contact”: “987654321”,
  • “dob”: “01-01-1991”,
  • “name”: “Tom Benzamin”,
  • “address_ids”: [
  • ObjectId(“52ffc4a5d85242602e000000”),
  • ObjectId(“52ffc4a5d85242602e000001”)
  • ]
  • }
    */

转载地址:http://jxzjz.baihongyu.com/

你可能感兴趣的文章
NIO同步网络编程
查看>>
NIO基于UDP协议的网络编程
查看>>
NIO笔记---上
查看>>
NIO蔚来 面试——IP地址你了解多少?
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>
NISP国家信息安全水平考试,收藏这一篇就够了
查看>>
NIS服务器的配置过程
查看>>
NIS认证管理域中的用户
查看>>
Nitrux 3.8 发布!性能全面提升,带来非凡体验
查看>>
NiuShop开源商城系统 SQL注入漏洞复现
查看>>
NI笔试——大数加法
查看>>
NLog 自定义字段 写入 oracle
查看>>
NLog类库使用探索——详解配置
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
NLP 模型中的偏差和公平性检测
查看>>
Vue3.0 性能提升主要是通过哪几方面体现的?
查看>>
NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
查看>>
NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
查看>>
NLP三大特征抽取器:CNN、RNN与Transformer全面解析
查看>>
NLP学习笔记:使用 Python 进行NLTK
查看>>