删除文档
mysql : delete from table where ...
mongodb : db.collection.remove(query,justOne)
remove(query,justOne)
功能 : 删除文档
参数 : query 用法同find
justOne 布尔值 默认为false表示删除所有符合条件的文档
设置为true则表示只删除一条
e.g. 删除所有不存在sex域的文档
db.class1.remove({sex:{$exists:false}})
e.g. 删除第一条性别为w的文档
db.class1.remove({sex:'w'},true)
删除集合中所有文档
e.g. 删除class1中所有文档
db.class1.remove({})
修改文档
mysql : update table set ... where ...
mongodb: db.collection.update(query,update,upsert,multi)
update(query,update,upsert,multi)
功能 : 修改文档
参数 : query 筛选条件 用法同find
update 要修改成什么内容 通常配合修改操作符(修改器)使用
upsert 布尔值,默认是false 如果query没有筛选到文档则不做任何操作
如果设置为true 则如果query没有筛选到匹配文档则根据query和update内容插入新的文档
multi 布尔值 默认false 表示如果有多条符合条件文档则只修改第一条
如果设置为true则表示修改所有符合条件文档
e.g. 将Tom的年龄修改为18
db.class0.update({name:'Tom'},{$set:{age:18}})
e.g. 如果有name=Jame的文档则修改,如果没有则根据query update插入新的文档
db.class0.update({name:'Jame'},{$set:{age:15}},true)
e.g. 修改所有年龄小于17的为18
db.class0.update({age:{$lt:17}},{$set:{age:18}},false,true)
补充 : 通过find查找结果,可以使用序列号获取具体某一项
e.g. 获取查找结果中的第3项
db.class0.find({},{_id:0})[2]
修改操作符(修改器)
$set
修改一个域的值
e.g. Lily年龄修改为17
db.class0.update({name:'Lily'},{$set:{age:17}})
增加一个域
e.g. 为jame增加sex域
db.class0.update({name:'Jame'},{$set:{sex:'m'}})
$unset
删除一个域
e.g. 删除Abby 的sex域 sex后为空字符串
db.class0.update({name:'Abby'},{$unset:{sex:''}})
$rename
修改域的名称
e.g. 将sex域名改为gender
db.class0.update({},{$rename:{sex:'gender'}},false,true)
$setOnInsert
如果使用update插入了文档,则将该修改器内容作为插入文档的一部分
e.g. 如果插入了新文档则setOnInsert内容也会作为新文档一部分
db.class0.update({name:'Jame'},{$set:{age:18},$setOnInsert:{gender:'m',tel:'123456'}},true)
$inc
加法修改器
e.g. 所有人年龄加1
db.class0.update({},{$inc:{age:1}},false,true)
* 参数可以是正数负数 整数小数
$mul
乘法修改器
e.g.
db.class0.update({},{$mul:{age:0.5}},false,true)
* 参数可以是正数负数 整数小数
$min
如果筛选文档的指定域值小于min值则不修改,大于min值则修改为min值
e.g. Levi age如果大于20则修改为20
db.class0.update({name:'Levi'},{$min:{age:20}})
$max
如果筛选文档的指定域值大于max值则不修改,小于max值则修改为max值
e.g. 如果Lenzer age 小于19则改为19
db.class0.update({name:'Lenzer'},{$max:{age:19}})
数组修改器
$push
向数组中添加一项
e.g. 给小红 score数组中添加一项91
db.class1.update({name:'小红'},{$push:{score:91}})
$pushAll
向数组中添加多项
e.g.
db.class1.update({name:'小乔'},{$pushAll:{score:[94,10]}})
$pull
从数组中删除一项
e.g. 从数组中删除一项
db.class1.update({name:'小红'},{$pull:{score:78}})
$pullAll
从数组中删除多项
e.g.
db.class1.update({name:'小乔'},{$pullAll:{score:[92,10]}})
$each
对多个值逐个进行操作
e.g. 分别插入99 10
db.class1.update({name:'小乔'},{$push:{score:{$each:[99,10]}}})
$position
指定插入位置
e.g. 将67 插入到数组1号位置
db.class1.update({name:'小明'},{$push:{score:{$each:[67],$position:1}}})
$sort
数组排序
e.g. 将说有score域的数组降序排序
db.class1.update({},{$push:{score:{$each:[],$sort:-1}}},false,true)
$pop
弹出一项 1表示弹出最后一项 -1弹出第一项
e.g. 删除小明score中第一项
db.class1.update({name:'小明'},{$pop:{score:-1}})
$addToSet
向数组中添加一项 但是不能添加重复的内容
e.g. 如果数组中没有81 则添加81
db.class1.update({name:'小刚'},{$addToSet:{score:81}})
时间数据类型
mongo中存储时间大多为 ISODate
存储当前时间方法
1. new Date() 自动生成当前时间
e.g.
db.class2.insert({book:'Python入门',date:new Date()})
2. ISODate() 自动生成当前时间
e.g.
db.class2.insert({book:'Python精通',date:ISODate()})
3. Date() 将系统时间转换为字符串
e.g.
db.class2.insert({book:'Python疯狂',date:Date()})
指定时间
ISODate()
功能 : 生成mongo标准时间类型数据
参数 : 如果不传参默认为当前时间
传参表示指定时间
“2018-01-01 12:12:12”
"20180101 12:12:12"
"20180101"
e.g.
db.class2.insert({book:'Python崩溃',date:ISODate("2018-07-01 11:15:56")})
时间戳
valueOf()
获取某个时间的时间戳
e.g. 获取当前标准时间时间戳
db.class2.insert({book:'Python涅槃',date:ISODate().valueOf()})
Null 类型
值 null
1. 如果某个域存在却没有值可以赋值为null
e.g.
db.class2.insert({book:'Python死去活来',price:null})
2. 可以查找某个域不存在的情况
e.g. 如果date域不存在也能find到
db.class2.find({date:null})
想要看更多的课程请微信关注SkrEric的编程课堂