MongoDB入门教程一[文档与集合]

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

设计一个订单基本信息表和一个订单明细表,1个订单有N个订单明细,这些订单明细通过外键关联到订单主表,所以要存储一个订单的信息,需要“1+N”条记录。在MongoDB中将订单基本信息和该订单的所有订单明细信息通过嵌套的json格式组织起来,保存为1个文档。也就是说在关系型数据库中需要“1+N”条记录存储的数据,MongoDB保存为1个类似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.把数据库名添加到集合名字前面,中间用点号连接,得到集合的完全限定名,就是命名空间,例如:命名空间 neighbor.blog。

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

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

时间: 2024-10-10 07:28:36

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

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

MongoDB的文档使用BSON(Binary JSON)来组织数据,BSON类似于JSON,JSON只是一种简单的表示数据的方式,只包含了6种数据类型(null.布尔.数字.字符串.数组及对象),不能完全满足复杂业务的需要,因此,BSON还提供日期.32位数字.64位数字等类型.以下对mongoDB的类型进行简要说明: 1. Null[类型编号:10] null类型用于表示空值或不存在的字段,如:{“x”:null} 2. 布尔类型 Boolean[类型编号:8] 布尔类型有两上值,’true

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

MongoDB Shell 是MongoDB自带的JavaScript Shell,随MongoDB一同发布,它是MonoDB客户端工具,可以在Shell中使用命令与MongoDB实例交互,对数据库的管理操作(CURD.集群配置.状态查看等)都可以通过MongoDB Shell来完成. 今天介绍MongoDB的一些基本命令和小技巧: 1.利用help查看帮助: 输入:“db.user.find().help();”查看find()的帮助信息 2.基本命令: 连接/切换数据库       例如:u

MongoDb 入门教程

MongoDb 入门教程 目录 MongoDb的基本数据结构 安装MongoDb服务器 连接MongoDb服务器 MongoDb创建数据库 MongoDb创建表 MongoDb插入数据 MongoDb查询数据 范围操作符 AND操作符 OR操作符 排序 聚合 MongoDb更新数据 MongoDb删除数据 常用的DDL命令 MongoDb图形化工具 总结 参考资料 MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的高性能数

新手织梦建站教程:设置网页文档默认点击数为0方法

新手织梦建站教程:设置网页文档默认点击数为0 自从学会使用织梦建站以来,一直有一个问题困扰着自己,把织梦随机产生的网页默认点击数为0.相信刚接触织梦的朋友也有和我一样的想法,今天终于设置成功了,拿出来和新手站长们一起分享下,说起来汗颜的很!其实后台里面能够直接设置,以不过自己实在马虎的很,以前一直没有仔细的研究织梦,才落到如此下场,嘿嘿!还是说正事吧,下面我们来了解下织梦后台设置,网页默认点击次数为0的方法和步骤,希望对您有所帮助! 第一步.登录织梦后台,点击左侧"系统"选项,在&qu

MongoDB的文档、集合、数据库(二)

为了理解MongoDB的名词,可以将其于关系型数据库进行对比: 一.文档 概述 文档是MongoDB的核心概念,是数据的基本单元,非常类似于关系数据库中的行.在MongoDB中,文档表示为键值对的一个有序集.MongoDB使用Javascript shell,文档的表示一般使用Javascript里面的对象的样式来标记,如下: {"title":"hello!"} {"title":"hello!","recomme

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

文档 概述 文档是MongoDB的核心概念,是数据的基本单元,非常类似于关系数据库中的行.在MongoDB中,文档表示为键值对的一个有序集.MongoDB使用Javascript shell,文档的表示一般使用Javascript里面的对象的样式来标记,如下: 1 {"title":"hello!"} 2 {"title":"hello!","recommend":5} 3 {"title&quo

Aspose.Words使用教程之在文档中找到并替换文本

Aspose.Words使用教程之在文档中找到并替换文本 Aspose.Words是一款先进的文档处理控件,在不使用Microsoft Words的情况下,它可以使用户在各个应用程序中执行各种文档处理任务,其中包括文档的生成.修改.渲染.打印,文档格式转换和邮件合并等文档处理.此外,Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocument, PDF, XPS, EPUB和其他格式. 使用范围:在前的范围内替换查找或替换特定的字符串,因为它会返回替换的数量,所以它

MongoDB入门教程(二)

上一篇博文中,我详细描述了从MongoDB简介到安装,在本节,主要从整体角度去看MongoDB. MongoDB的数据架构 官方是这样描述的 MongoDB stores all documents in collections. A collection is a group of related documents that have a set of shared common indexes. Collections are analogous to a table in relatio

.NET平台下使用MongoDB入门教程

适合人群:完全没有接触MongoDB或对MongoDB有一点了解的C#开发人员.因为本文是一篇入门级的文章. 一.了解MongoDB  MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.  MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似js