MongoDB入门教程一[文档与集合]
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入门教程一[文档与集合]的更多相关文章
- MongoDB入门教程三[数据类型]
MongoDB的文档使用BSON(Binary JSON)来组织数据,BSON类似于JSON,JSON只是一种简单的表示数据的方式,只包含了6种数据类型(null.布尔.数字.字符串.数组及对象),不 ...
- MongoDB入门教程二[MongoDB Shell 简介与使用]
MongoDB Shell 是MongoDB自带的JavaScript Shell,随MongoDB一同发布,它是MonoDB客户端工具,可以在Shell中使用命令与MongoDB实例交互,对数据库的 ...
- mongodb入门教程二
title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...
- mongodb入门教程
title: mongodb入门教程 date: 2016-04-06 14:47:18 tags: --- 为什么要认识呢,因为这玩意就一傻逼 借用一下百科的介绍 MongoDB 是一个介于关系数据 ...
- MongoDb 入门教程
MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的高性能数据存储解决方案,经常被用于非关系型数据的存储,能存储海量的数据. 常 ...
- MongoDB文档、集合、数据库简介
文档 概述 文档是MongoDB的核心概念,是数据的基本单元,非常类似于关系数据库中的行.在MongoDB中,文档表示为键值对的一个有序集.MongoDB使用Javascript shell,文档的表 ...
- mongodb的基本操作与插入文档(document)
一.mongodb的基本操作: 1.查看mongodb当前所有的databases : show dbs 2.选择数据库(database) : use databaseName(该数据库不存在则会自 ...
- Mongodb(3)插入文档,更新文档,删除文档
insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的 insert() 或 save() 方法. 插入文档:db.COLLECTION_NAME.insert(d ...
- MWeb for Mac使用教程-如何在文档库中快速搜索
使用MWeb for Mac专业的 Markdown 编辑写作软件,可以让你随时记录自己的想法,灵感,创意,为您的工作节省宝贵的时间.本篇文章带来的是MWeb for Mac如何在文档库中快速搜索使用 ...
随机推荐
- bzoj千题计划123:bzoj1027: [JSOI2007]合金
http://www.lydsy.com/JudgeOnline/problem.php?id=1027 因为x+y+z=1,所以z=1-x-y 第三维可以忽略 将x,y 看做 平面上的点 简化问题: ...
- [转载].net程序集自动生成版本号
原文:http://hi.baidu.com/bcbgrand/item/a74a7ba71c3b0ea928ce9dce .net程序版本号的格式是4个十进制数字 比如 2.5.729.2 依次是 ...
- 判断html是否含有图片
核心代码: $url="http://XXXXX/article/012.html"; $content=file_get_contents($url); //读取文章页面源代码 ...
- c++刷题(15/100)矩阵转置,最深子树
题目一:矩阵转置 给定一个矩阵 A, 返回 A 的转置矩阵. 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引. 示例 1: 输入:[[1,2,3],[4,5,6],[7,8,9]] 输出 ...
- HDU 3065 病毒侵袭持续中 (AC自动机)
题目链接 Problem Description 小t非常感谢大家帮忙解决了他的上一个问题.然而病毒侵袭持续中.在小t的不懈努力下,他发现了网路中的"万恶之源".这是一个庞大的病毒 ...
- node的导入导出
node的每一个文件,都是一个域,那么里面所有的变量都不允许被外界引用,除非导出.要使用外界的变量,也必须使用导入的方式来导入.import 文件路径. css可以直接使用import +文件路径导入 ...
- 【解析】解析XML
一.dom4j import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelp ...
- 【译】第一篇 Replication:复制简介
本篇文章是SQL Server Replication系列的第一篇,详细内容请参考原文. 复制这个词来自拉丁语中的"replicare",意味着重复.Replication des ...
- Electron 开发环境下总是 crash
全局安装一个 electron devtool 关掉 崩溃时选择重新打开
- Oracle数据库中几种常见的SCN
控制文件中的SCN 数据文件头的SCN 数据块中的SCN 日志文件头中的SCN 事务SCN 内存中的SCN 一 控制文件中的SCN 1.1 数据库SCN 数据库SCN表示最近一次全量checkpoin ...