简单的MongoDB实践

文章目录

  • 简单的MongoDB实践
    • 操作环境
    • MongoDB认识
      • 查看配置文件
      • MongoDB与SQL术语
      • MongoDB外部命令
    • 常用Shell命令
    • 使用MongoDB的Shell命令
      • 创建数据库
      • 查看当前数据库
      • 向已创建的数据库中插入任意文档
      • 查看已插入的文档
      • 更新文档中任意字段值
      • 删除刚创建的文档、集合和数据库
    • 常见问题
    • 参考文章

操作环境

  • 操作系统: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术语 说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
primary key primary 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,并查看其是否启动

可以看到,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 的使用,忽略即可。

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

创建数据库

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

show dbs

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

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

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

查看当前数据库

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

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

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}])

查看已插入的文档

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

show collections

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

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

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

更新文档中任意字段值

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

使用 update() 方法更新数据

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

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

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

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

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

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

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

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

db.test2.remove({})

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

db.test2.drop()

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

db.dropDatabase()

常见问题

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

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

我们需要为 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

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

pgrep mongo -l

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

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

sudo service mongodb start
sudo service mongodb stop

参考文章

Ubuntu下MongoDB安装与使用教程

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

菜鸟教程-MongoDB 教程

简单的MongoDB实践相关推荐

  1. php mongodb execute,php简单操作mongodb

    您现在的位置是:网站首页>>PHP>>php php简单操作mongodb 发布时间:2019-09-29 16:34:25作者:wangjian浏览量:525点赞量:0 一: ...

  2. 简单的HBase实践

    简单的HBase实践 文章目录 简单的HBase实践 操作环境 HBase常用shell命令 使用HBase的shell命令 命令行启动HBase并预置数据 1.列出 HBase 中所有的表 2.打印 ...

  3. 简单的MapReduce实践

    简单的MapReduce实践 文章目录 简单的MapReduce实践 操作环境 实现文件合并和去重操作 新建项目 新建Java程序 打包程序 运行程序 实现文件的倒排索引 第一步,Map 第二步,Co ...

  4. php mongoclient使用,PHP使用mongoclient简单操作mongodb数据库示例

    本文实例讲述了PHP使用mongoclient简单操作mongodb数据库.分享给大家供大家参考,具体如下: 最好回到<mongodb shell基础命令[进阶篇]>,再来看这里的内容,否 ...

  5. asp.net mvc + mongodb 实践

    一段是时间都在寻找一种速度快速的存储方式.在考虑使用nosql的时候是基于两个原因的,第一:可移植性,第二:快速,第三:稳定:在对比了各种非关系数据库后决定采用mongodb.至于对他的介绍在网上也不 ...

  6. Spring Boot 2 快速教程:WebFlux 集成 Thymeleaf 、 Mongodb 实践(六)

    摘要:首先说明一下该博客教程是转载泥瓦匠BYSocket的文章 原创出处 https://www.bysocket.com 「作者公众号:泥瓦匠BYSocket 」 原文地址:https://www. ...

  7. python documents in chinese_基于 Python 的简单自然语言处理实践

    基于 Python 的简单自然语言处理 Twenty News Group 语料集处理 20 Newsgroup 数据集包含了约 20000 篇来自于不同的新闻组的文档,最早由 Ken Lang 搜集 ...

  8. go mgo包 简单封装 mongodb 数据库驱动

    mgo是go编写的mongodb的数据库驱动,集成到项目中进行mongodb的操作很流畅,以下是对其的一些简单封装,具体使用可随意改动封装. 安装 go get gopkg.in/mgo.v2 使用 ...

  9. egg+vue+mongodb实践开发在线文档管理平台——水墨文档

    授权转载自:围的围 https://segmentfault.com/a/1190000037621367 前言 团队中会遇到在线文档管理的需求,包括技术文档,接口文档, excel 文档,和产品原型 ...

最新文章

  1. Spring Cloud Alibaba 系统保护:微服务架构雪崩效应与服务限流
  2. 举例分析private的作用【c/c++学习】
  3. (51)SSDT HOOK 实现进程保护
  4. HDU-2688 Rotate
  5. Python入门学习笔记08(random模块)
  6. 列表推导式、字典推导式、集合推导式
  7. 权限柜作用_超市条码寄存柜使用要点
  8. 8天学通MongoDB——第四天 索引操作
  9. 我用Python爬虫挣钱的那点事
  10. 【模电】0010 正弦波产生电路(RC正弦波振荡电路)
  11. 机器之心线上活动:虚拟现实(VR)与增强现实(AR)
  12. 华为PUSH SDK 接入方法
  13. 「文档编写」- 常见序号写法 @20210412
  14. 2017年囧事大全,全部真人真事
  15. Python制作简单的学生成绩管理系统
  16. 【scala】获取当前时间的上一个自然周以及自然周集合;获取当前时间的上一个自然月以及自然月的第一天与最后一天
  17. 设置win2003远程桌面允许2个以上会话
  18. android简单星座查询,简单的星座查询
  19. python:tkinter —— Tcl/Tk 的 Python 接口
  20. 印度人的1919乘法

热门文章

  1. 物联网、云计算、大数据、人工智能之间有怎样的联系和区别?
  2. ensp启动设备蓝屏_为什么早期的Windows经常死机蓝屏,现在却很少发生?这些你都知道吗?...
  3. python入门之控制结构-循环结构_Python 入门之控制结构 - 循环结构(一)
  4. AI:2020年6月22日北京智源大会演讲分享之机器感知专题论坛—14:50-15:30吴玺宏教授《一种具身自监督学习框架:面向任何语种语音的音系构建任务》
  5. 成功解决OSError: cannot open resource self.font = core.getfont(font, size, index, encoding, layout_engin
  6. AI公开课:19.03.20吴甘沙-驭势科技联合创始人《AI时代的自动驾驶趋势》课堂笔记以及个人感悟
  7. 成功解决ValueError: not enough values to unpack (expected 2, got 1)
  8. ML与math:机器学习与高等数学基础概念、代码实现、案例应用之详细攻略——基础篇
  9. linux ubuntu 16.04下deb文件的安装以及一些问题的解决
  10. C/C++调试:gdbserver的简单使用