MongoDB快速入门
如果把mysql比作大名鼎鼎的c语言;那么mongodb就是简单友好的python
Mysql数据库有什么缺陷?
关系型数据库表结构复杂,扩展性差;
需要较高的学习成本,复杂的表结构会产生更高的维护成本
关系型数据库的"连接查询"会影响查询效率?
会使查询效率变低
连接查询效率低,为什么还要分表?
分表可以减少数据冗余
数据库可以不使用复杂的表结构么?
可以,但要多消耗一些存储空间,mongodb(非关系型数据库)就为此而生
与Mysql相比,Mongodb简单极了!
<1>mongo默认开启了新手模式,登录无需键入用户名和密码,只需要在终端输入
mongo
即可进入交互环境<2> mongo没有"表"的概念,也不用设计表(mongo使用"集合"存储 多个"键值对",取代表的功能)
<3> mongo有数据库的概念,但可以不经创建,直接使用(类似vim编辑器创建新文件,如果新文件中未添加数据,则新文件不会保存到硬盘;与vim不同的是,如果用户添加了数据,vim需要手动确认,保存文件,mongo会自动保存数据到相应的数据库)
<4>mongo没有mysql中"记录"的概念,mongo使用"文档"存储任意数量的"键值对"信息("记录"中的信息受表中各字段的约束,"文档"可以存放任意数量的键值对)
<5>mongo无需手动设置"主键",系统会自动为每一个"文档"自动添加"_id"键值对,保证数据的唯一性.
关系型数据库mysql 与 非关系型数据库mongodb 概念对比
mysql | mongodb |
---|---|
表(table) | 集合(collection) |
记录(row) | 文档(document) |
主键(primary key) 手动设置 | _id 自动生成 |
MongoDB基本用法
一.数据库管理系统
1.服务端
(1)开启服务
sudo service mongod start
示例
(2)重启服务
sudo service mongod restart
示例
(3)关闭服务
sudo service mongod stop
示例
2.客户端
(1)登录数据库
mongo
示例
(2)退出数据库
exit
示例
二.数据库
1.查看数据库
示例
show dbs
2.使用数据库
格式
use 数据库名
示例
use students
3.查看当前数据库
示例
db
4.删除当前数据库
示例
db.dropDatabase()
三.集合
1.创建集合
格式
db.createCollection("集合名称")
示例(创建名为
stu
的集合)db.createCollection("stu")
2.查看当前数据库的集合
示例
show collections
3.删除集合
格式
db.drop.集合名()
示例(移除名为
stu
的文档)db.drop.stu()
四.文档
1.插入文档
格式
db.集合名.insert({})
示例
db.stu.insert({name:"李明",age:18,gender: true,birthday:"1995-12-08",height:186.6})
2.删除文档
格式
db.集合名.remove({删除文档的条件})
示例(移除age=18的文档)
db.stu.remove({age:{$gt:18}})
3.修改文档
格式
db.集合名.update({修改文档的条件},{$set:{需要修改的属性名:属性值}}, {multi: ture})
示例(将age=17的文档更新为 age=18)
db.stu.update({age:18},{$set:{age:17}},{multi:true})
4.查询文档
格式(pretty是为了把结果格式化为json格式)
db.集合名.find({查询文档的条件}).pretty()
示例(筛选age大于10的文档)
db.stu.find({age:{$gt:10}}).pretty()
MongoDB