在 MongoDB 中,数据库 、集合 和 文档 是三种不同的概念,它们之间有层次关系。下面我会介绍它们的关系和相关的创建语法。
1. 文档(Document)
-
定义:文档是 MongoDB 中的基本数据单元,类似于 JSON 对象,由键值对构成。
-
格式 :文档的键值对格式类似于:
json{ "name": "Alice", "age": 25, "city": "New York" }
-
文档没有固定的结构,不同文档可以有不同的字段。
2. 集合(Collection)
- 定义:集合是文档的容器,类似于关系型数据库中的表。集合可以包含多个文档,并且这些文档的结构不必完全相同。
- 关系:文档属于集合,一个集合可以存储多个文档。
3. 数据库(Database)
- 定义:数据库是集合的容器,类似于关系型数据库中的数据库概念。每个 MongoDB 实例可以包含多个数据库。
- 关系:数据库包含多个集合,一个集合包含多个文档。
三者之间的层次关系:
- 数据库 -> 集合 -> 文档
- MongoDB 实例中有多个数据库,每个数据库中有多个集合,每个集合中有多个文档。
4. 创建数据库、集合和文档的语法
1. 创建数据库
在 MongoDB 中,没有专门的命令来创建数据库,数据库是在你第一次使用它(插入数据时)自动创建的。
-
切换到一个新数据库 :
bashuse myDatabase
这条命令会切换到
myDatabase
,如果这个数据库不存在,MongoDB 会在你第一次向其中插入数据时自动创建它。
2. 创建集合
如果你想显式地创建一个集合,可以使用 createCollection
命令,但通常你直接插入数据时会自动创建集合。
-
显式创建集合:
bashdb.createCollection("myCollection")
-
隐式创建集合(通过插入数据时创建):
bashdb.myCollection.insert({ name: "John", age: 25 })
3. 插入文档
插入文档时,如果数据库和集合不存在,它们会自动创建。
-
向集合中插入一个文档:
bashdb.myCollection.insert({ name: "John", age: 25, city: "New York" })
-
向集合中插入多个文档:
bashdb.myCollection.insertMany([ { name: "John", age: 25, city: "New York" }, { name: "Alice", age: 30, city: "Los Angeles" } ])
5. 总结
- 数据库 包含 集合 ,集合 包含 文档。
- 当你插入文档时,MongoDB 会自动创建所需的集合和数据库。
- 你可以显式创建数据库和集合,也可以在插入文档时自动创建它们。