MongoDB 是面向集合存储的文档型数据库,其涉及到的基本概念与关系型数据库相比有所不同。举个例子,在关系型数据库中,我们记录一个订单的信息,通常是这样设计表结构的:

设计一个订单基本信息表和一个订单明细表,个订单有个文档。也就是说在关系型数据库中需要“个类似Json的文档。所以,关系型数据库中的一条记录(或1+N条记录)基本相当于MongoDB的一个文档。关系型数据库中一个表存储多条记录,MongoDB中用一个“文件夹”存放多个类似的文档,并将这样的“文件夹”叫做集合。下面是MongoDB和关系型数据库的概念比较:

MongoDB 关系型数据库
Databse(数据库) Databse(数据库)
Collection(集合) Table(表)

Document(文档)

Record/Row(记录/行)

field(字段)

Column(列)

Index(索引)

Index(索引)

embedded documents/reference
(内嵌文档/引用)

table joins(表连接)

文档是MongoDB最核心的概念,本质上是一种类JSON的BSON格式的数据。BSON是一种类JSON的二进制格式数据,它可以理解为在JSON基础上添加了一些新的数据类型,包括日期、int32、int64等。BSON是由一组组键值对组成,它具有轻量性、可遍历性和高效性三个特征。可遍历性是MongoDB将BSON作为数据存储的主要原因

使用MongoDB文档时需要注意以下问题:

1.MongoDB中写操作的原子性限制在文档级别,对文档的保存、修改、删除等都是原子操作;

由于MongoDB是弱事务性的,所以当需要保证数据完整性存储时,可以利用文档的原子性来保障。还是以上面订单的例子来说,为防止MongoDB在保存主订单信息和订单明细时发生部分数据未保存成功,可以将订单主信息和订单明细保存为一个文档,这样,要么整体保存成功,要么整体失败,就相当于实现了事务的效果。

2.单个文档占用的存储空间不能超过16MB;

3.MongoDB会尽量保持文档被插入时键值对的顺序,但是不严格保证。

文档键(field)的命名需要注意以下几点:

1._id是系统保留的关键字,它是默认的主键,该值在集合中必须唯一,且不可更改

2.键不能包含\0或空字符,这个字符用于表示键的结尾

3.不能以$开头

4.不能包含.(点号)

5.键是区分大小写的且不能重复  例如:{foo:1,Foo:1}

集合的命名需要注意以下几点:

1.集合名不能是空字符串("")

2.集合名不能含有\0字符(空字符),该字符表示集合名的结尾

3.集合名不能以"system."开头,此前缀是系统本身保留的

4.集合名中不能包含$字符(注:可包含.

用命名空间组织集合:

类似于A文件夹下面存放某文档(或A文件夹下面存放B文件夹,然后B文件夹下面存放某文档),那么获得该文档的路径为:A/文档(或A/B/文档),将“/”替换为“.”,变为“A.B.文档”,那么“A.B.”就是该文档的命名空间。

1.把数据库名添加到集合名字前面,中间用点号连接,得到集合的完全限定名,就是命名空间,例如:命名空间 buyinpaly.community。

2. 需要说明的是,点号还可以出现在集合名字中,例如:buyinpaly.community.reviews  ,可以将reviews集合看作是community集合的子集合。

3.使用子集合可以使我们更好的组织数据,使数据的结构更加清晰明了。

MongoDB入门教程一[文档与集合]的更多相关文章

  1. MongoDB入门教程三[数据类型]

    MongoDB的文档使用BSON(Binary JSON)来组织数据,BSON类似于JSON,JSON只是一种简单的表示数据的方式,只包含了6种数据类型(null.布尔.数字.字符串.数组及对象),不 ...

  2. MongoDB入门教程二[MongoDB Shell 简介与使用]

    MongoDB Shell 是MongoDB自带的JavaScript Shell,随MongoDB一同发布,它是MonoDB客户端工具,可以在Shell中使用命令与MongoDB实例交互,对数据库的 ...

  3. mongodb入门教程二

    title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...

  4. mongodb入门教程

    title: mongodb入门教程 date: 2016-04-06 14:47:18 tags: --- 为什么要认识呢,因为这玩意就一傻逼 借用一下百科的介绍 MongoDB 是一个介于关系数据 ...

  5. MongoDb 入门教程

    MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的高性能数据存储解决方案,经常被用于非关系型数据的存储,能存储海量的数据. 常 ...

  6. MongoDB文档、集合、数据库简介

    文档 概述 文档是MongoDB的核心概念,是数据的基本单元,非常类似于关系数据库中的行.在MongoDB中,文档表示为键值对的一个有序集.MongoDB使用Javascript shell,文档的表 ...

  7. mongodb的基本操作与插入文档(document)

    一.mongodb的基本操作: 1.查看mongodb当前所有的databases : show dbs 2.选择数据库(database) : use databaseName(该数据库不存在则会自 ...

  8. Mongodb(3)插入文档,更新文档,删除文档

    insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 插入文档:db.COLLECTION_NAME.insert(d ...

  9. MWeb for Mac使用教程-如何在文档库中快速搜索

    使用MWeb for Mac专业的 Markdown 编辑写作软件,可以让你随时记录自己的想法,灵感,创意,为您的工作节省宝贵的时间.本篇文章带来的是MWeb for Mac如何在文档库中快速搜索使用 ...

随机推荐

  1. newcoder Wannafly挑战赛4 树的距离

    https://www.nowcoder.com/acm/contest/35/D 假设要查询x的子树中,与x的距离>=y的距离和 那么如果有这么一个 由x的子树中的点到x的距离构成的序列,且按 ...

  2. NOIP2011 提高组 Day1

    自测:8:27——11:51 实际得分:100+60+20=180 期望得分:100+60+40=200 T3读错题,失20 http://cogs.pro/cogs/page/page.php?ai ...

  3. Openssh版本升级(Centos6.7)

    实现前提公司服务器需要进行安全测评,扫描漏洞的设备扫出了关于 openssh 漏洞,主要是因为 openssh的当前版本为5.3,版本低了,而yum最新的openssh也只是5.3,没办法只能到 rp ...

  4. ASP.NET配置文件Web.config 详细解释

    一.认识Web.config文件 Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式), ...

  5. Web应用开发中的几个问题

    Introduction 由于Ajax技术在Gmail中的成功应用和高性能的V8引擎的推出使得编写Web应用变得流行 起来,使用前端技术也可以编写具有复杂交互的应用.相对于native应用,Web应用 ...

  6. 【转】.NET中的三种Timer的区别和用法

    最近正好做一个WEB中定期执行的程序,而.NET中有3个不同的定时器.所以正好研究研究.这3个定时器分别是: //1.实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应 ...

  7. HDU 1069 Monkey and Banana(最长递减子序列)

    题目链接 题意:摞长方体,给定长方体的长宽高,个数无限制,可随意翻转,要求下面的长方体的长和宽都大于上面的,都不能相等,问最多能摞多高. 题解:个数无限,其实每种形态最多就用一次,把每种形态都单独算一 ...

  8. Concat层解析

    Concat层的作用就是将两个及以上的特征图按照在channel或num维度上进行拼接,并没有eltwise层的运算操作,举个例子,如果说是在channel维度上进行拼接conv_9和deconv_9 ...

  9. 新电脑重新安装win10+python3.6+anaconda+tensorflow1.12(gpu版)

    安装了一天的软件,遇到了很多坑,在快泪崩的时候,始终以磨刀不误砍柴工鼓励自己,坚持安好了,话不多说,上干货: 前言:        TensorFlow 有两个版本:CPU 版本和 GPU 版本.GP ...

  10. MFC将二进制文件导入资源后释放

    1.前言 前一篇笔记记录了怎么修改PE,此篇记录下如何利用自身的资源文件. 2.编程思路 获得资源句柄 - 获得资源文件大小 - 加载资源文件 - 锁定资源并获得其指针. 3.实践代码 1)编译以下代 ...