现在谈论一下复杂点的“增删改查”。“文档”是采用“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操作