MongoDB学习笔记(2)
今天老大给分配了一个任务,让我将已经整理好的数据封装到MongoDB里面还给我了一个MongoDB的可视化工具Robo 3T,讲真的第一次知道
MongoDB还有可视化工具,颠覆了我那种一开始学习MongoDB的热情,因为感觉敲着DO窗口酷酷的~,以前也用过MongoDB但大多时候都是哪里不会
查那里,结果很快就忘记了,可能是因为长时间不用的原因,现在,我还是整理下MongoDB的主要操作,为了以后方便查询,也方便其他人来查资
料。
MongoDB的优点
- 非关系型数据库
- 分布式数据库
- 扩展灵活,结构灵活,并且支持查询和索引
MongoDB的缺点
- 缺乏事务控制
- 无法保障数据完整性
下面我们来举个例子,来说明MongoDB(非关系型数据库)与Oracle(关系型数据库的差别)
结构上面的差别
1. Oracle的存储结构
从这个图中我们能够得出以下结论
- 1 Oracle是分用户空间的
- 2 每个用户都有自己独有的数据库
- 3 操作的单元为表
2. MongoDB的存储结构
从这个图中我们能够得出以下结论
- 1 MongoDB不分工作空间
- 2 只有一个用户
- 3 有自己独有的库
- 4 操作的单元为集合
MongoDB命令
. 1 库命令
查看
show dbs
使用
use 库名称
创建
use 库名称 // 当库名称存在的时候就是用,不存在就创建
删除
db.dropDatabase() // 删除当前使用的库
. 2 集合
查看
show collections
创建 -
当使用'db.集合名.insert()'插入数据的时候,集合不存在会自动创建
删除
db.集合名.drop()
. 3 数据操作
插入
插入单条数据
db.dept.insert({"no":1,"dname":"beijing"})
插入多条数据
var objs = ({"no":3,"dname":"chengdu"},{"no":4,"dname":"shenyang"}) db.dept.insert(objs);
或者
for(var i = 1; i < 10; i++) { db.dept.insert({"no":10+i,"dname":"bj"+i}) }
删除
删除单条记录
db.dept.remove({"no":1});
删除所有记录
db.dept.remove({});
修改
全部更新覆盖
db.dept.update({"no":1},{"dname":"shanghai"})
部分更新
db.dept.update(条件json对象,{$set:要更新的json对象}) // 示例 db.dept.update({"no":1},{$set:{"dname":"chengdu"}})
查询
gt, g t , lt, gte, g t e , lte,$ne 等
查询所有记录
db.dept.find()
查询某条记录,no > 1的记录
db.dept.find({"no":{$gt:1}}) db.dept.find({"no":{$gte:2}})
排序
db.dept.find().sort({"no":1})
1表示升序,-1表示降序
分页
//跳过degin条,然后抓取记录(包含头) db.dept.find().skip(begin).limit(记录数);
统计
统计所有记录数量
db.dept.count();
统计满足条件记录数
db.dept.count({"no":11}) db.dept.count({"no":{>:10}})