安装好 MongoDB 数据库后,接下来我们演示下通过命令行来操纵 MongoDB 数据库。
MongoDB 数据库的配置文件为:/etc/mongod.conf
。
为了使外部应用能够连接本机(使用 VMware Workstation 创建的虚拟机)安装的 MongoDB 数据库,需要修改 /etc/mongod.conf
文件中的 127.0.0.1
为本机IP地址。比如,修改127.0.0.1
为本虚拟机IP地址 192.168.91.128
,连接端口保持默认的 27017
即可,如下所示:
1
2
3
4
|
# network interfaces
net:
port: 27017
bindIp: 192.168.91.128 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
|
使用的命令为:
1
2
3
|
mongo --host 192.168.91.128 --port 27017
或者
mongo --host 192.168.91.128 # 由于使用 mongodb的默认端口,可以省略对端口的指定。
|
如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[root@xdhuxc ~]# mongo --host 192.168.91.128 -p 27017
MongoDB shell version v3.7.9-27-g793e59f
connecting to: mongodb://192.168.91.128:27017/
MongoDB server version: 3.7.9-27-g793e59f
Server has startup warnings:
2018-05-30T21:51:01.053+0800 I CONTROL [initandlisten]
2018-05-30T21:51:01.069+0800 I CONTROL [initandlisten] ** NOTE: This is a development version (3.7.9-27-g793e59f) of MongoDB.
2018-05-30T21:51:01.069+0800 I CONTROL [initandlisten] ** Not recommended for production.
2018-05-30T21:51:01.069+0800 I CONTROL [initandlisten]
2018-05-30T21:51:01.069+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-05-30T21:51:01.069+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2018-05-30T21:51:01.069+0800 I CONTROL [initandlisten]
2018-05-30T21:51:01.092+0800 I CONTROL [initandlisten]
2018-05-30T21:51:01.092+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-05-30T21:51:01.092+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2018-05-30T21:51:01.092+0800 I CONTROL [initandlisten]
2018-05-30T21:51:01.092+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-05-30T21:51:01.092+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2018-05-30T21:51:01.092+0800 I CONTROL [initandlisten]
>
|
使用如下命令创建数据库:
具体操作如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
|
> show dbs # 显示数据库列表。
admin 0.000GB
config 0.000GB
local 0.000GB
> use xdhuxc # 创建数据库并切换至该数据库。
switched to db xdhuxc
> show dbs # 再次显示数据库列表,却发现创建的数据库 xdhuxc 不在列表中。要显示新建的数据库,需要至少插入一个文档,空的数据库是不显示出来的。
admin 0.000GB
config 0.000GB
local 0.000GB
> db # 显示当前数据库。
xdhuxc
|
在 MongoDB 中,默认的数据库是 test
,如果没有创建任何数据库,那么创建的集合和文档将存储在 test
数据库中。
在创建的 xdhuxc
数据库中创建 person
集合,如下所示:
1
2
3
4
5
6
7
8
9
|
> use xdhuxc
switched to db xdhuxc
> db # 显示当前数据库。
xdhuxc
> db.createCollection("person") # 在数据库 xdhuxc 中创建集合 person。
{ "ok" : 1 }
> show collections # 显示当前数据库中的集合。
person
>
|
要将数据插入到 MongoDB 集合中,可以使用 MongoDB 的 insert()
方法,其基本语法如下:
1
|
db.collection_name.insert(document)
|
向 xdhuxc
数据库的 person
集合中插入数据,如下所示:
1
2
3
4
5
6
|
> db.person.insert({ # 插入一条记录,文档以json的格式定义。
name : "xiaoming",
age : "24",
company : "xdhuxc company"
})
WriteResult({ "nInserted" : 1 })
|
person
为集合的名称,如果集合中不存在 person
集合,那么 MongoDB 将创建该集合,然后将文档插入该集合中。
在插入的文档中,如果不指定_id参数,那么MongoDB会为此文档分配一个唯一的ObjectId。_id为集合中每个文档唯一的12个字节的十六进制数,12个字节划分如下:
1
2
|
_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id,
3 bytes incrementer)
|
查询所有文档,将以非结构化方式显示所有文档。
1
2
|
> db.person.find()
{ "_id" : ObjectId("5b0f384f244fc0152ed71f5f"), "name" : "xiaoming", "age" : "24", "company" : "xdhuxc company" }
|
再插入一条数据
1
2
3
4
5
6
7
8
9
|
> db.person.insert({
name : "dalong",
age : "29",
company : "Apple company"
})
WriteResult({ "nInserted" : 1 })
> db.person.find()
{ "_id" : ObjectId("5b0f384f244fc0152ed71f5f"), "name" : "xiaoming", "age" : "24", "company" : "xdhuxc company" }
{ "_id" : ObjectId("5b0f3aa0244fc0152ed71f60"), "name" : "dalong", "age" : "29", "company" : "Apple company" }
|
接下来,插入一条结构不相同的数据
1
2
3
4
5
6
7
8
9
10
11
|
> db.person.insert({
name : "dalong",
age : "29",
company : "Apple company",
address : "Beijing"
})
WriteResult({ "nInserted" : 1 })
> db.person.find()
{ "_id" : ObjectId("5b0f384f244fc0152ed71f5f"), "name" : "xiaoming", "age" : "24", "company" : "xdhuxc company" }
{ "_id" : ObjectId("5b0f3aa0244fc0152ed71f60"), "name" : "dalong", "age" : "29", "company" : "Apple company" }
{ "_id" : ObjectId("5b0f3aeb244fc0152ed71f61"), "name" : "dalong", "age" : "29", "company" : "Apple company", "address" : "Beijing" }
|
可以看出,在 MongoDB 中,是以文档的形式来组织非结构化数据的,文档的结构可由使用者自己定义,和 关系型数据库有很大的区别。
使用如下命令删除文档:
1
2
3
4
|
> db.person.remove({}) # 删除集合 person 中的所有文档
WriteResult({ "nRemoved" : 3 })
> db.person.find() # 再次查询所有文档,已经在上一步全部删除了,所以没有结果返回。
>
|
① 切换到待删除数据库
1
2
3
4
5
6
7
8
9
|
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
xdhuxc 0.000GB
> use xdhuxc
switched to db xdhuxc
> db
xdhuxc
|
② 删除当前数据库
1
2
|
> db.dropDatabase()
{ "dropped" : "xdhuxc", "ok" : 1 }
|
③ 查看删除结果
1
2
3
4
|
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
|
可以看到,数据库 xdhuxc 已经被删除。
MongoDB 的官方文档网址:http://www.mongoing.com/docs/mongo.html
更多详细的有关 MongoDB的知识,大家可以去 MongoDB 的官方网站学习。