一、MongoDB介绍

MongoDB 是一个是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

二、安装MongoDB

MongoDB安装很简单,无需下载源文件,可以直接用apt-get命令进行安装。 
打开终端,输入以下命令:

sudo apt-get install mongodb
  • 1

截图如下: 
 
安装完成后,在终端输入以下命令查看MongoDB版本:

mongo -version
  • 1

输出版本信息,表明安装成功,截图如下: 
 
启动和关闭mongodb命令如下:

service mongodb start
service mongodb stop
  • 1
  • 2

截图如下: 
 
默认设置MongoDB是随Ubuntu启动自动启动的。 
输入以下命令查看是否启动成功:

pgrep mongo -l   #注意:-l是英文字母l,不是阿拉伯数字1
  • 1

截图如下: 
 
卸载MongoDB

sudo apt-get --purge remove mongodb mongodb-clients mongodb-server
  • 1

三、使用MongoDB

shell命令模式

输入mongo进入shell命令模式,默认连接的数据库是test数据库,在此之前一定要确保你已经启动了MongoDB,否则会出现错误,启动之后运行成功,如下截图: 

常用操作命令:

数据库相关 
show dbs:显示数据库列表 
show collections:显示当前数据库中的集合(类似关系数据库中的表table) 
show users:显示所有用户 
use yourDB:切换当前数据库至yourDB 
db.help() :显示数据库操作命令 
db.yourCollection.help() :显示集合操作命令,yourCollection是集合名 
MongoDB没有创建数据库的命令,如果你想创建一个“School”的数据库,先运行use School命令,之后做一些操作(如:创建聚集集合db.createCollection('teacher')),这样就可以创建一个名叫“School”的数据库。截图如下: 
 
下面以一个School数据库为例,在School数据库中创建两个集合teacher和student,并对student集合中的数据进行增删改查基本操作(集合Collection相当于关系型数据库中的表table)。 
1、切换到School数据库

use School #切换到School数据库。MongoDB 无需预创建School数据库,在使用时会自动创建
  • 1

2、创建Collection

db.createCollection('teacher') #创建一个聚集集合。MongoDB 其实在插入数据的时候,也会自动创建对应的集合,无需预定义集合
  • 1

截图如下: 
 
3、插入数据 
与数据库创建类似,插入数据时也会自动创建集合。 
插入数据有两种方式:insert和save。

db.student.insert({_id:1, sname: 'zhangsan', sage: 20}) #_id可选
db.student.save({_id:1, sname: 'zhangsan', sage: 22}) #_id可选
  • 1
  • 2

这两种方式,其插入的数据中_id字段均可不写,会自动生成一个唯一的_id来标识本条数据。而insert和save不同之处在于:在手动插入_id字段时,如果_id已经存在,insert不做操作,save做更新操作;如果不加_id字段,两者作用相同都是插入数据。截图如下: 
 
添加的数据其结构是松散的,只要是bson格式均可,列属性均不固定,根据添加的数据为准。先定义数据再插入,就可以一次性插入多条数据,截图如下: 
 
运行完以上例子,student 已自动创建,这也说明 MongoDB 不需要预先定义 collection ,在第一次插入数据后,collection 会自动的创建。截图如下: 
 
3、查找数据 
db.youCollection.find(criteria, filterDisplay) 
criteria :查询条件,可选 
filterDisplay:筛选显示部分数据,如显示指定列数据,可选(当选择时,第一个参数不可省略,若查询条件为空,可用{}做占位符,如下例第三句)

db.student.find()  #查询所有记录。相当于:select * from student
db.student.find({sname: 'lisi'}) #查询sname='lisi'的记录。相当于: select * from student where sname='lisi'
db.student.find({},{sname:1, sage:1}) #查询指定列sname、sage数据。相当于:select sname,sage from student。sname:1表示返回sname列,默认_id字段也是返回的,可以添加_id:0(意为不返回_id)写成{sname: 1, sage: 1,_id:0},就不会返回默认的_id字段了
db.student.find({sname: 'zhangsan', sage: 22}) #and 与条件查询。相当于:select * from student where sname = 'zhangsan' and sage = 22
db.student.find({$or: [{sage: 22}, {sage: 25}]}) #or 条件查询。相当于:select * from student where sage = 22 or sage = 25
  • 1
  • 2
  • 3
  • 4
  • 5

查询操作类似,这里只给出db.student.find({sname: 'lisi'})查询的截图,如下: 

4、修改数据 
db.youCollection.update(criteria, objNew, upsert, multi ) 
criteria: update的查询条件,类似sql update查询内where后面的 
objNew : update的对象和一些更新的操作符(如$set)等,也可以理解为sql update查询内set后面的。 
upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 
multi: mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。默认false,只修改匹配到的第一条数据。 
其中criteria和objNew是必选参数,upsert和multi可选参数 
举例如下:

db.student.update({sname: 'lisi'}, {$set: {sage: 30}}, false, true) #相当于:update student set sage =30 where sname = 'lisi';
  • 1

操作截图如下: 
 
5、删除数据

db.student.remove({sname: 'chenliu'}) #相当于:delete from student where sname='chenliu'
  • 1

操作截图如下: 
 
6、退出shell命令模式 
输入exit或者Ctrl+C退出shell命令模式

注意:MongoDB相较安全性更偏向易用性,默认是没有开启用户权限的,如果想开启用户权限,可以参考Ubuntu下开启MongoDB用户权限

最新文章

  1. ReactiveCocoa代码实践之-UI组件的RAC信号操作
  2. css单行文本与多行溢出文本的省略号问题
  3. Win7硬盘整数分区一览表
  4. [zz]利用碎片时间健身
  5. 总结Controller向View传值的方式(转)
  6. spring security防御会话伪造session攻击
  7. Scrum项目6.0
  8. SQLServer、MySQL、Oracle语法差异小集锦
  9. CheckBox和RadioButton
  10. emacs 快捷键笔记
  11. 基于asp.net的ajax分页
  12. 如何检查机器是否因为装了Windows更新而需要重新启动
  13. 使用SQL语句创建和删除约束
  14. cocos2dx3.2 异步载入和动态载入
  15. 回家(洛谷 P1592)
  16. 第五章 MySQL事务,视图,索引,备份和恢复
  17. Mac 电脑前端环境配置
  18. 面试阿里前端P6血和泪换来的收获
  19. numpy计算结果的保存——ndarray格式数据保存
  20. 使用监听器解决路径问题,例如在jsp页面引入js,css的web应用路径

热门文章

  1. 剑指Offer——重建二叉树
  2. pandas 报错:【sys:1: DtypeWarning: Columns (15) have mixed types. Specify dtype option on import or set low_memory=False.】
  3. Python元组组成的列表转化为字典
  4. Python3+Selenium3自动化测试-(四)
  5. Maven学习笔记—私服(包含maven的setting.xml配置)
  6. 对 tensorflow 中 tf.nn.embedding_lookup 函数的解释
  7. python16_day01【介绍、基本语法、流程控制】
  8. python 对象和类
  9. [MongoDB] 学习笔记(2)
  10. windows10+mysql8.0.zip安装