简单的MongoDB实践

简单的MongoDB实践

操作环境

  • 操作系统:Ubuntu 16.04
  • MongoDB版本:3.6.17

如果没有安装 MongoDB 的,请参照这篇博客进行安装 Ubuntu16.04在线安装MongoDB详细教程

MongoDB认识

查看配置文件

在线安装的 MongoDB,其配置文件 mongod.conf 默认在 /etc 目录下,我们可以通过命令进行查看。

cat /etc/mongod.conf

在配置文件中, Storage:doPath指定了 MongoDB 数据库的存储路径,默认是 /var/lib/mongodb

storage:
dbPath: /var/lib/mongodb

SystemLog:Path指定了日志文件的路径,默认是 /var/log/mongodb/mongod.log。logAppend:true表示以追加的方式写入日志。

systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

我们可以根据自己的需求更改 MongoDB 的存储路径,当然也可以保持默认。

MongoDB与SQL术语

SQL术语MongoDB术语说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

MongoDB外部命令

在l操作 MongoDB 数据库之前,应该熟悉一些基本的外部操作命令,例如启动和关闭 MongoDB 等。

命令说明
sudo service mongodb start启动 MongoDB
sudo service mongodb stop关闭 MongoDB
mongo -version查看 MongoDB 版本
pgrep mongo -l查看 MongoDB 是否启动
mongo进入 MongoDB 的 shell 模式

这里我们输入对应的命令启动 MongoDB,并查看其是否启动

mg1

可以看到,MongDB 已经成功启动。

注意,如果 MongoDB 启动时报错,请参考“常见问题”进行解决

常用Shell命令

shell命令说明
show dbs查看所有数据库
show users显示所有的用户
show collections显示当前数据库的集合
use DataBase_Name如果数据库不存在,则创建数据库,否则切换到指定数据库。DataBase_Name是数据库名
db查看当前数据库名
db.dropDatabase()删除当前数据库
db.stats()显示当前数据库的一些信息
db.help()显示数据库操作指令
db.myCollection.insert(xxx)向集合中插入文档,myCollection是集合名
db.myCollection.update(xxx)对集合中的文档进行更新,myCollection是集合名对应
db.myCollection.remove(xxx)删除集合中的对应文档,myCollection是集合名
db.myCollection.find().pretty()以格式化易读的方式显示集合中的所有文档,myCollection是集合名
db.myCollection.drop()删除指定集合,myCollection是集合名

MongoDB 没有类似于 create 这种创建数据库的命令,如果想创建一个名为“student”的数据库,先运行“use student”命令,之后往数据库里插入一些数据,这个数据库就创建成功了。

如果创建了数据库之后不插入数据,那么当前数据库为空,输入 show dbs命令时看不到该数据库的(MongoDB不会显示空的数据库)。一段时间内仍对其没有操作的话,该数据库会被自动删除。

在 MongoDB 中,我们不需要创建集合。当我们插入一些文档时,MongoDB 会自动创建集合。

MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中

使用MongoDB的Shell命令

在使用 MongoDB 的 shell 命令之前,我们应该先输入命令 mongo 进入其 shell 模式。

启动 shell 模式时可能会出现以下的一些 WARNING,这并不会影响到 MongoDB 的使用,忽略即可。

mg2

如果想要退出 shell 模式也很简单,输入 exit 命令即可。

创建数据库

我们先看一下 MongoDB 的数据库列表

show dbs

m1

接着,我们创建一个名为 student 的数据库,并往里插入一个文档。

use student
db.res.insert({"id":100, "name":"zhangsan"})

再次查看数据库列表,可以发现 student 数据库创建成功。
m2

查看当前数据库

  • 输入命令 db 即可查看当前数据库名称
  • 输入命令 db.stats() 可以查看当前数据库的详细信息

m3

向已创建的数据库中插入任意文档

MongoDB可以不定义集合,在插入文档时集合会自动创建。

我们可以在指定集合中一次插入一条文档数据

db.test1.insert({"id":10, "name":"lisi", "age":22})

也可以一次插入多条

db.test2.insert([{"id":20, "name":"liwu", "age":20}, {"id":30, 
"name":"liliu", "age":21}, {"id":40, "name":"liqi", "age":22}])

m4

查看已插入的文档

我们先查看数据库中的集合

show collections

m5

然后查找每个集合中的文档。查找的方法其实是 find(),pretty()方法是以易读的形式进行展示

db.res.find().pretty()
db.test1.find().pretty()
db.test2.find().pretty()

m6

find() 方法还支持条件查找,例如我们查找 id 小于 40 的文档。具体的条件查找方法请参考这篇博客 mongodb 条件查询
m7

更新文档中任意字段值

我们先查看 test2 集合中文档,方便做对比。
m8

使用 update() 方法更新数据

  • set中输入的键值对应,则更新对应数据
  • set中输入的键值不存在,则会在文档后面添加
db.test2.update({"id":20},{$set:{'age':200}})
db.test2.update({"id":30},{$set:{'data':'hhh'}})

m9

MongoDB中也可以使用 save() 方法进行更新,不过 save 相当于对整个文档内容的全覆盖,而不是局部更新。(sava方法一般用的很少)

如果使用save,就只需要使用 _id ,就能修改对应的数据了。

删除刚创建的文档、集合和数据库

remove() 函数可以接受一个查询文档作为可选参数来有选择性地删除符合条件的文档。删除文档是永久性的,不能撤销,也不能恢复。我们在执行 remove() 函数前最好先用 find() 命令来查看文档。

例如,我们删除 test2 集合中 id 为 20 的所有文档。

db.test2.remove({'id':20})

m10

如果想要删除 test2 集合下的所有文档,可以使用如下方式(相当于truncate)

db.test2.remove({})

删除集合,我们直接使用 drop() 方法。如果删除集合的话,集合下现存的所有文档也会被一并删除。

db.test2.drop()

m11

删除数据库,我们使用 dropDatabase() 方法。同样,删除数据库的话,数据库下所有现存的集合也都会别一并删除。

db.dropDatabase()

m12

常见问题

输入“sudo service mongodb start”启动 MongoDB 时报错

Failed to start mongodb.service: Unit mongodb.service not found.

mc1

我们需要为 MongoDB 创建一个配置文件,一共是三步:

  • 使用 vim 编辑器创建配置文件
sudo vim /etc/systemd/system/mongodb.service
  • 在配置文件中添加如下内容

按“i”键进入编辑模式,将文本内容输入进去。按“esc”键接着输入“:wq”保存并退出。

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target
  • 输入如下命令启动 MongoDB
sudo systemctl start mongodb
sudo systemctl status mongodb

mc2

我们输入命令测试 MongoDB 是否启动成功。

pgrep mongo -l

找到了 MongoDB 进程,MongoDB 已经启动成功。
mc3

以后每次启动或关闭 MongoDB ,仍然使用 service 命令。

sudo service mongodb start
sudo service mongodb stop

参考文章

Ubuntu下MongoDB安装与使用教程

ubuntu16.04通过apt-get方式安装MongoDB

菜鸟教程-MongoDB 教程

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值