mongodb学习(二)
2016-03-08 13:50
435 查看
现在谈论一下复杂点的“增删改查”。“文档”是采用“K-V”格式存储的。Json里value可能是字符串,也可能是数组,也有可能是内嵌的一个json对象。相同的方式也适用于Bson。常见的两种插入就是单条插入和批量插入。
一、Insert插入
①:单条插入
之前说了,mongo命令打开的也是一个js shell。所以js语法在这里也行的通。
var temp={“name”:"bob","password":"12345","age":21,"address":{"province":"jiangxi","city":"nanchang"},"favourite":["apple","banana"]}
db.user.insert(temp)
temp.name="jay"
temp.age=25
temp.address={"province":"taiwan","city":"tainan"}
temp.favourite=["money","dance"]
db.user.insert(temp)
查询2条记录。
②:批量插入
mongodb里没有提供批量查询的方法,我们可以采用for循环的方式进行批量插入。
二、Find操作
平常我们查询,用的最多就是
> >= < <= != = And OR In NotIn
在mongodb里面对应 $gt $gte $lt $lte $ne “没有特殊关键字" "无关键字" "$or" "$in" "$nin"
db.user.find({"age":{$lt:22}}) age>22
db.user.find({"age":{$lt:22}}) age<22
db.user.find({"age":{$gte:22}}) age>=22
db.user.find({"age":{$lte:22}}) age<=22
db.user.find({"age":{$ne:22}}) age!=22
db.user.find({"age":"22"}) age==22
db.user.find({"name":"jay","age":20}) name=jay&&age=20
db.user.find({$or:[{"address.province":"jiangxi"},{"address.province":"guangdong"}]}) address,province=jiangxi or address.province=guangdong
db.user.find({"address.province":{$in:["jiangxi","guangdong"]}}) address.province in ["jiangxi","guangdong"]
db.user.find({"address.province":{$nin:["jiangxi","guangdong"]}}) address.province not in ["jiangxi","guangdong"]
mongodb正则表达式匹配
db.user.find({"name":/^j/,"name":/e$/})
$where结合js
db.user.find({$where:function(){return this.name=='jack'}})
三、update操作
更新包括整体更新和局部更新。
var model=db.user.findOne({"name":"jack"})
model.age=30
db.user.update({"name":"jack"},model)
①:$inc修改器
$inc也就是increase的缩写,每次修改会在原有的基础上自增$inc指定的值。如果文档中没有此key,则会创建key
db.user.update({"name":"jack"},{$inc:{"age":30}}")
②:$set修改器
db.user.update({"name":“jacak”},{$set:{"age":10}})
③upsert操作
这个是mongodb创造的“词”,这个操作就是说:如果我没有查询到,我就在数据库里面增加一条,好处就是:避免了我在数据库里面判断是update还是add操作。
将update的第三个参数设为true即可。
db.user.update({"name":"kobe"},{$inc:{"age":34}},true)
④:批量更新
在mongodb中如果匹配多条,默认情况下只更新第一条,那么如果我们有需求必须批量更新,只需将update的第四个参数中设为true即可。
四、Remove操作
一、Insert插入
①:单条插入
之前说了,mongo命令打开的也是一个js shell。所以js语法在这里也行的通。
var temp={“name”:"bob","password":"12345","age":21,"address":{"province":"jiangxi","city":"nanchang"},"favourite":["apple","banana"]}
db.user.insert(temp)
temp.name="jay"
temp.age=25
temp.address={"province":"taiwan","city":"tainan"}
temp.favourite=["money","dance"]
db.user.insert(temp)
查询2条记录。
②:批量插入
mongodb里没有提供批量查询的方法,我们可以采用for循环的方式进行批量插入。
二、Find操作
平常我们查询,用的最多就是
> >= < <= != = And OR In NotIn
在mongodb里面对应 $gt $gte $lt $lte $ne “没有特殊关键字" "无关键字" "$or" "$in" "$nin"
db.user.find({"age":{$lt:22}}) age>22
db.user.find({"age":{$lt:22}}) age<22
db.user.find({"age":{$gte:22}}) age>=22
db.user.find({"age":{$lte:22}}) age<=22
db.user.find({"age":{$ne:22}}) age!=22
db.user.find({"age":"22"}) age==22
db.user.find({"name":"jay","age":20}) name=jay&&age=20
db.user.find({$or:[{"address.province":"jiangxi"},{"address.province":"guangdong"}]}) address,province=jiangxi or address.province=guangdong
db.user.find({"address.province":{$in:["jiangxi","guangdong"]}}) address.province in ["jiangxi","guangdong"]
db.user.find({"address.province":{$nin:["jiangxi","guangdong"]}}) address.province not in ["jiangxi","guangdong"]
mongodb正则表达式匹配
db.user.find({"name":/^j/,"name":/e$/})
$where结合js
db.user.find({$where:function(){return this.name=='jack'}})
三、update操作
更新包括整体更新和局部更新。
var model=db.user.findOne({"name":"jack"})
model.age=30
db.user.update({"name":"jack"},model)
①:$inc修改器
$inc也就是increase的缩写,每次修改会在原有的基础上自增$inc指定的值。如果文档中没有此key,则会创建key
db.user.update({"name":"jack"},{$inc:{"age":30}}")
②:$set修改器
db.user.update({"name":“jacak”},{$set:{"age":10}})
③upsert操作
这个是mongodb创造的“词”,这个操作就是说:如果我没有查询到,我就在数据库里面增加一条,好处就是:避免了我在数据库里面判断是update还是add操作。
将update的第三个参数设为true即可。
db.user.update({"name":"kobe"},{$inc:{"age":34}},true)
④:批量更新
在mongodb中如果匹配多条,默认情况下只更新第一条,那么如果我们有需求必须批量更新,只需将update的第四个参数中设为true即可。
四、Remove操作
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- Android之获取手机上的图片和视频缩略图thumbnails
- 如何在 Fedora 上安装 MongoDB 服务器
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- 数据库链接字符串查询网站
- 如何在 Ubuntu 上安装 MongoDB
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 信息安全聚合 Sec-News 的重构之路
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页