概念
- 文档是 MongoDB 中的基本数据单元,可以粗略地认为其相当于关系数据库管理系统中的行(但表达力要强得多)
- 一个 MongoDB 实例可以拥有多个独立的数据库,每个数据库都拥有自己的集合。
- 每个文档都有一个特殊的键 “_id”,其在所属的集合中是唯一的。
1. 文档
文档是 MongoDB 的核心概念:它是一组有序键值的集合。类似于映射、哈希表等
2. 集合
集合就是一组文档。如果将文档比作关系数据库中的行,那么一个集合就相当于一张表。
2.1 动态模式
集合具有动态模式的特性。这意味着一个集合中的文档可以具有任意数量的不同“形状”。
- 为什么需要多个集合呢?
(1)对于开发人员和管理员来说,将不同类型的文档保存在同一个集合中可能是一个噩梦。
(2)获取集合列表比提取集合中的文档类型列表要快得多。
(3)在创建索引(尤其是在创建唯一索引)时,我们会采用一些文档结构。这些索引是按照每个集合来定义的。通过只将单一类型的文档放入集合中,可以更高效地对集合进行索引。
2.2 命名
集合由其名称进行标识。
- 格式要求:
(1)集合名称不能是空字符串("")。
(2)集合名称不能是空字符串("")。
(3)集合名称不能以 system. 开头,该前缀是为内部集合保留的。例如,system.users集合中保存着数据库的用户,system.namespaces 集合中保存着有关数据库所有集合的信息。
(4)用户创建的集合名称中不应包含保留字符 $。许多驱动程序确实支持在集合名称中使用 $,这是因为某些由系统生成的集合会包含它,但除非你要访问的是这些集合之一,否则不应在名称中使用 $ 字符。
数据库
MongoDB 使用集合对文档进行分组,使用数据库对集合进行分组。
- MongoDB 实例可以承载多个数据库,每个数据库有零个或多个集合。
- 在同一个MongoDB 服务器上存储多个应用程序或用户的数据时,使用单独的数据库会非常有用。
命名要求:
(1)数据库名称不能是空字符串("")。
(2)数据库名称不能包含 /、\、.、"、*、<、>、:、|、?、$、单一的空格以及 \0(空字符),基本上只能使用 ASCII 字母和数字。
(3)数据库名称区分大小写。
(4)数据库名称的长度限制为 64 字节。
shell的基本操作
- insertOne 函数可以将一个文档添加到集合中。
- find 和 findOne 方法可用于查询集合中的文档。如果只想查看一个文档,可以使用 findOne。
- 如果想修改文档,可以使用 updateOne。updateOne 会接受(至少)两个参数:第一个用于查找要更新文档的限定条件,第二个用于描述要进行更新的文档。
- deleteOne 和 deletemany 方法会从数据库中永久删除文档。这两种方法都采用一个指定删除条件的过滤文档作为参数。