MongoDB中的集合是一组文档的集,相当于关系型数据库中的

1、创建集合

MongoDB使用db.createCollection()函数来创建集合

语法格式:db.createCollection(name, options)
name: 要创建的集合名称
options: 可选参数, 指定有关内存大小及索引的选项

options 可以是如下参数

字段

类型

描述

capped

布尔

(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数

autoindexid

布尔

(可选)如为 true,自动在 _id 字段创建索引。默认为 true

size

数值

(可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段

max

数值

(可选)指定固定集合中包含文档的最大数量

在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。

1.1、使用默认集合

在MongoDB中,我们也可以不用创建集合,当我们插入一些数据时,会自动创建集合,并且会使用数据库的名称作为集合的名称。

创建一个新数据库,名为develop

> use develop
switched to db develop
>

如果开启认证,需要为新数据库创建访问用户,新建用户名为 bao,密码为bao

# 创建新数据库develop
> use develop
switched to db develop

# 在数据库develop中创建新用户 bao
> db.createUser({user:"bao",pwd:"bao",roles:[{role:"readWrite",db:"develop"}]})
Successfully added user: {
	"user" : "bao",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "develop"
		}
	]
}
>

使用 bao 用户登录 develop数据库

> db.auth("bao","bao")
1
>

向develop库中插入一条数据

# 新开mongodb客户端,连接mongodb服务器
[root@iZ2ze5v2vdwv6veyksylhxZ ~]# mongo

MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mong
Implicit session: session { "id" : UUID("7cf1e0f1-e40b-44ed-a958-13a110aaef2a") }
MongoDB server version: 4.2.1

# 进入 develop 数据库中
> use develop
switched to db develop

# 用户认证
> db.auth("bao","bao")
1

# 向数据库的默认集合中插入一条数据,此处的develop数据库名就是默认集合,默认集合名=数据库名
> db.develop.insert({key:"love"})
WriteResult({ "nInserted" : 1 })

# 查看集合
> show collections
develop
>

1.2、创建不带参数的集合

mongodb集合数据结构 mongodb集合操作_数据库

# 进入mongodb的bin目录
[root@iZ2ze5v2vdwv6veyksylhxZ bin]# cd /usr/local/mongodb/mongodb-linux-x86_64-rhel70-4.2.1/bin/

# 查看bin目录下所有命令
[root@iZ2ze5v2vdwv6veyksylhxZ bin]# ll
total 282152
-rwxr-xr-x 1 root root 10100811 Oct 16  2019 bsondump
-rwxr-xr-x 1 root root     7694 Oct 16  2019 install_compass
-rwxr-xr-x 1 root root 47534944 Oct 16  2019 mongo
-rwxr-xr-x 1 root root 71584856 Oct 16  2019 mongod
-rwxr-xr-x 1 root root 14765905 Oct 16  2019 mongodump
-rwxr-xr-x 1 root root 14511931 Oct 16  2019 mongoexport
-rwxr-xr-x 1 root root 14473296 Oct 16  2019 mongofiles
-rwxr-xr-x 1 root root 14690724 Oct 16  2019 mongoimport
-rwxr-xr-x 1 root root 18154584 Oct 16  2019 mongoreplay
-rwxr-xr-x 1 root root 15088133 Oct 16  2019 mongorestore
-rwxr-xr-x 1 root root 39806704 Oct 16  2019 mongos
-rwxr-xr-x 1 root root 14258080 Oct 16  2019 mongostat
-rwxr-xr-x 1 root root 13918118 Oct 16  2019 mongotop

# 启动mongodb服务器,采用配置文件方式启动
[root@iZ2ze5v2vdwv6veyksylhxZ bin]#  ./mongod --config /usr/local/mongodb/mongodb-linux-x86_64-rhel70-4.2.1/etc/mongodb.conf

about to fork child process, waiting until server is ready for connections.
forked process: 8142
child process started successfully, parent exiting

# 启动mongodb客户端,连接mongodb服务器
[root@iZ2ze5v2vdwv6veyksylhxZ bin]# ./mongo

MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("812122e3-e890-4f36-a8fe-22c602b271fb") }
MongoDB server version: 4.2.1

# 进入admin目录
> use admin
switched to db admin

# 用户认证为管理员
> db.auth("pipi","love")
1
>

新开窗口,避免出现同一窗口两个用户认证报错

# 新开node窗口
Welcome to Alibaba Cloud Elastic Compute Service !

# 启动mongodb客户端
[root@iZ2ze5v2vdwv6veyksylhxZ ~]# mongo

MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("918d870e-c44e-44e1-9978-a8de963bb8dd") }
MongoDB server version: 4.2.1

# 进入 develop数据库
> use develop
switched to db develop

# 用户认证 bao用户
> db.auth("bao","bao")
1

# bao用户创建集合,因为设置了auth=true,操作数据库必须进行身份认证,管理员只能在admin库中进行身份认证
> db.createCollection("dev")
{ "ok" : 1 }

# 查看库中所有集合,develop是默认集合,集合名是数据库名,dev是无参数集合
> show collections
dev
develop
>

1.3、创建带参数的集合

在develop数据库中创建一个名为 dev2 的固定集合,整个集合空间大小为 20000000kb,文档最大个数为1000

# 创建集合
# capped:固定集合大小
# autoindexid  自动在id字段创建索引
# size 集合大小
# max 文档数量
> db.createCollection("dev2",{capped:true,autoIndexId:true,size:2000000,max:1000})
{
	"note" : "the autoIndexId option is deprecated and will be removed in a future release",
	"ok" : 1
}

# 查看所有集合
> show collections
dev
dev2
develop
>

2、查看集合

# 方式一
> show collections
dev
dev2
develop

# 方式二,因为非关系型数据库中的集合 等于 关系型数据库中的表,所以查看表也就是查看集合
> show tables
dev
dev2
develop
>

3、删除集合

如果要删除集合,需要先切换到需要删除集合所在的数据库,使用drop()函数删除集合即可

删除集合的语法格式为:db.集合名称.drop()

# 查询bin目录命令
[root@iZ2ze5v2vdwv6veyksylhxZ bin]# ll
total 282152
-rwxr-xr-x 1 root root 10100811 Oct 16  2019 bsondump
-rwxr-xr-x 1 root root     7694 Oct 16  2019 install_compass
-rwxr-xr-x 1 root root 47534944 Oct 16  2019 mongo
-rwxr-xr-x 1 root root 71584856 Oct 16  2019 mongod
-rwxr-xr-x 1 root root 14765905 Oct 16  2019 mongodump
-rwxr-xr-x 1 root root 14511931 Oct 16  2019 mongoexport
-rwxr-xr-x 1 root root 14473296 Oct 16  2019 mongofiles
-rwxr-xr-x 1 root root 14690724 Oct 16  2019 mongoimport
-rwxr-xr-x 1 root root 18154584 Oct 16  2019 mongoreplay
-rwxr-xr-x 1 root root 15088133 Oct 16  2019 mongorestore
-rwxr-xr-x 1 root root 39806704 Oct 16  2019 mongos
-rwxr-xr-x 1 root root 14258080 Oct 16  2019 mongostat
-rwxr-xr-x 1 root root 13918118 Oct 16  2019 mongotop

# 查询mongodb的bin目录全路径
[root@iZ2ze5v2vdwv6veyksylhxZ bin]# pwd
/usr/local/mongodb/mongodb-linux-x86_64-rhel70-4.2.1/bin

# 启动mongodb的服务器
[root@iZ2ze5v2vdwv6veyksylhxZ bin]# ./mongod --config /usr/local/mongodb/mongodb

about to fork child process, waiting until server is ready for connections.
forked process: 23663
child process started successfully, parent exiting

# 启动mongodb的客户端
[root@iZ2ze5v2vdwv6veyksylhxZ bin]# ./mongo

MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName
Implicit session: session { "id" : UUID("6df32291-42d5-46c1-b65e-fc9f3a785e1f") 
MongoDB server version: 4.2.1

# 进入admin管理员库
> use admin
switched to db admin

# 用户认证为管理员
> db.auth("pipi","love")
1

# 进入develop数据库
> use develop
switched to db develop

# 查询develop库中的所有集合
> show collections
dev
dev2
develop

# 删除dev2集合
> db.dev2.drop()
true
>