tsx81429 发表于 2023-6-29 08:02:58

MongoDB(二)

MongoDB概念解析

1、MongoDB vs SQL

https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628132104929-1652408975.png
2、数据库


[*]一个MongoDB可以建立多个数据库,其中默认数据库为“db”,存储在data目录中
[*]MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合、权限,不同数据库存储在不同的文件
[*]show dbs:显示所有的数据库列表
https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628132857064-1590570804.png

[*]db:可以显示当前数据库对象或集合
https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628132948644-1148647989.png

[*]use:连接到指定的数据库,如果不存在则可以创建一个数据库
https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628133029590-576682605.png

[*]数据库的名称要求:

[*]不能是空字符串
[*]不得含有' '(空格)、.、$、/、\和\0 (空字符)
[*]应该全部小写
[*]最多为64个字节
[*]保留数据库名:admin(拥有所有数据库的权限)、local(永远不会被复制)、config(分片设置)

3、文档(Document)


[*]文档是一组键值对(BSON),MongoDB的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型
https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628133430200-1659976341.png

[*]注意:

[*]文档中的键值对是有序的
[*]文档中的值不仅可以使在双引号里的字符串,也可以是其他数据类型,甚至可以是另外一个文档
[*]MongoDB区分类型和大小写
[*]MongoDB的文档不能有重复的键
[*]文档的键是字符串,除了少数例外,键可以使用任意的UTF-8字符

[*]文档命名规范:

[*]键不能含有空字符,\0用来表示键的结尾
[*].和$符号有特别的意义,只有在特定的环境下才可以使用
[*]以下划线"_"开头的键是保留的(不是严格要求的)

4、集合


[*]集合就是MongoDB的文档组,类似于关系型数据库中的表
[*]集合存在于数据库中,集合没有固定的结构,意味着你可以对集合插入不同格式和类型的数据
[*]当第一个文档插入时,集合就会被创建
1、合法的集合名


[*]集合名称不能是空字符串
[*]集合名不能含有空字符,只能再结合结尾表示
[*]集合名称不能以“system.”开头,这是为系统集合保留的前缀
[*]用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$
2、Capped collections


[*]capped collections就是固定大小的集合
[*]它有很高的性能以及队列过期的特性,是高性能的自动的维护对象的插入顺序
https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628134358068-53944654.png
5、元数据


[*]在MongoDB中,元数据(Metadata)是用于描述和管理数据库、集合和文档的信息。它包含了关于这些对象的属性、结构和配置的数据。
[*]元数据在MongoDB中非常重要,它提供了对数据库和集合的结构、配置和性能等方面的了解,帮助管理员和开发人员有效地管理和操作MongoDB数据库。
https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628134449444-552247824.png
6、数据类型

1、常用数据类型

https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628134654403-511070258.png
2、ObjectId


[*]类似于唯一主键,可以很快的去生成和排序,包含12bytes
[*]由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间
https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628134749216-1950486383.png
3、字符串


[*]BSON 字符串都是 UTF-8 编码
4、时间戳


[*]时间戳是指特定事件发生时的标记或记录,通常以数字形式表示。它表示自某个参考点以来经过的时间量,以秒、毫秒或其他单位进行测量。
[*]BSON 有一个特殊的时间戳类型用于 MongoDB 内部使用,与普通的 日期 类型不相关。 时间戳值是一个 64 位的值。
[*]时间戳的起点通常是某个特定的时刻,称为"纪元"(epoch)。最常用的纪元是1970年1月1日格林威治标准时间(UTC)的午夜。在Unix和类Unix系统中,时间戳通常表示自此纪元以来经过的秒数。例如,当前时间的时间戳是一个表示自1970年1月1日以来的秒数。
[*]时间戳还可以包含更精确的时间信息,例如毫秒级或微秒级时间戳,以提供更高的时间分辨率。在这种情况下,时间戳可能包括小数部分,表示秒的小数值。
[*]前32位是一个 time_t 值(与Unix新纪元相差的秒数),后32位是在某秒中操作的一个递增的序数
[*]BSON 时间戳类型主要用于 MongoDB 内部使用。在大多数情况下的应用开发中,你可以使用 BSON 日期类型。
4、日期


[*]日期类型是有符号的, 负数表示 1970 年之前的日期。
https://img2023.cnblogs.com/blog/2987571/202306/2987571-20230628135752422-449053477.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: MongoDB(二)