主要内容
1. 关系型数据库和非关系型数据库
* Nosql不是关系模型构建的数据库,不保证数据一致性,结构灵活
* NoSql弥补了关系型数据库高并发数据处理速度慢的缺点
* Nosql种类多样,技术成熟度不如关系型数据库
2. mongodb数据库特点,安装,命令设置
3. mongodb的组成结构
4. mongodb的数据类型
5. 数据库操作
* use database 选择数据库不存在则创建
* db.dropDatabase() 删除数据库
* show dbs 查看数据库
命令 : mongodump 备份
mongorestore 恢复
mongostat 数据库监控
mongotop 查看读写时长
6. 集合操作:
db.createCollection() 创建集合
db.collection.insert() 集合不存在自动创建
db.collection.drop() 删除集合
db.collection.renameCollection() 重命名
show collections 查看集合
db.getCollection('class') 获取集合对象
7. 文档插入
insertOne()
insertMany()
insert()
save() 当_id冲突时会替换原文档
8. 查找函数
find(query,field)
************************************************
cookie:
计算机基础课 : 计算机原理,算法导论,编程原理
公众号 : python程序员 python开发者 算法爱好者
app : 知乎 掘金
网站 : 伯乐在线 CSDN
一. 数据操作(续)
1. 查找函数
db.collection.findOne(query,field)
功能: 查找第一个复合条件的文档
参数: 同find
返回:返回查找到的文档
e.g. 查找第一个性别为男的文档
db.class0.findOne({sex:'m'},{_id:0})
2. query操作符使用
操作符:mongodb中使用$符号注明的一个有特殊意义的字符串,用以表达丰富的含义,比如:$lt 表示小于
比较操作符
【1】 $eq 等于 =
e.g. 年龄等于17
db.class0.find({age:{$eq:17}},{_id:0})
【2】 $lt 小于 <
e.g. 字符串可以比较大小
db.class0.find({name:{$lt:'Tom'}},{_id:0})
【3】 $gt 大于 >
e.g. 查找一个区间范围
db.class0.find({age:{$gt:17,$lt:20}},{_id:0})
【4】 $lte 小于等于 <=
【5】 $gte 大于等于 >=
【6】 $ne 不等于 !=
【7】 $in 包含
e.g. 查找年龄在数组范围的
db.class0.find({age:{$in:[17,19,21]}},{_id:0})
【8】 $nin 不包含
e.g. 查找年龄不在数组范围的
db.class0.find({age:{$nin:[17,19,21]}},{_id:0})
逻辑操作符
【1】 $and 逻辑与
e.g. 查找年龄小于19 并且性别为w的
db.class0.find({$and:[{age:{$lt:19}},{sex:{$ne:'w'}}]},{_id:0})
* query中的多个条件本身也表示并且关系
【2】 $or 逻辑或
e.g. 查找年龄大于18或者性别为w
db.class0.find({$or:[{age:{$gt:18}},{sex:'w'}]},{_id:0})
【3】 $not 逻辑非
e.g. 查找年龄不大于18的
db.class0.find({age:{$not:{$gt:18}}},{_id:0})
【4】 $nor 既不也不(多个条件均为假则结果为真)
e.g. 年龄不大于18 性别不为 m
db.class0.find({$nor:[{age:{$gt:18}},{sex:'m'}]},{_id:0})
【5】 混合条件语句
年龄大于等于19或者小于18 并且 性别为 w
db.class0.find({$and:[{$or:[{age:{$gte:19}},{age:{$lt:18}}]},{sex:'w'}]},{_id:0})
(年龄大于等于17的男生) 或者 (姓名叫 Abby 或者Emma)
db.class0.find({$or:[{age:{$gte:17},sex:'m'},{name:{$in:['Abby','Emma']}}]},{_id:0})
数组操作符
【1】 查找数组中包含元素
e.g. 查找score数组中元素包含大于90的文档
db.class2.find({score:{$gt:90}},{_id:0})
【2】 $all 查找数组中同时包含多项
e.g. 查找数组中同时包含87,89的文档
db.class2.find({score:{$all:[87,89]}},{_id:0})
【3】 $size 根据数组的元素个数查找
e.g. 查找数组中包含3个元素的文档
db.class2.find({score:{$size:3}},{_id:0})
【4】 $slice 用于field参数,表示查找数组哪些项
e.g. 查找数组中的前两项
db.class2.find({},{_id:0,score:{$slice:2}})
e.g. 跳过数组第一项,查看后面两项
db.class2.find({},{_id:0,score:{$slice:[1,2]}})