标签:
MongoDB基本操作之Update
update方法参数
//query:更新的条件 //obj:更新的对象 //Boolean类型,true:没有则新增,false:只更新不新增 //multi:是否允许批量更新 function (query, obj, upsert, multi) { //dosomething }
文档替换:
var where= { "age":29 }; var p1 = db.user.findOne(where); p1.age++;//年龄自增1 db.user.update(where,p1);//将匹配到的第一个文档整个替换成新的文档
常用修改器:
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$set":{ "hobby":"跑步" }//$set修改器会更新或者新增指定的字段 } db.user.update(where,action);//为邓超新增一个hoppy字段
修改字段的类型
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$set":{"hoppy":["跑步","唱歌","跳舞"]}//将之前的hoppy字段修改成一个兴趣数组 } db.user.update(where,action);
修改内嵌文档中的字段
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$set": { "family": { "wife":"孙俪", "father":"未知", "monther":"未知", "sons":["邓涵之","邓涵一"] } } }; db.user.update(where,action);//增加邓超家庭关系数据 action= { "$set":{"family.father":"邓九公"}//将邓超关系文档中的父亲字段改为邓九公 } db.user.update(where,action);
删除文档中的某个字段
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$unset":{"family.wife":1}//$unset操作符用于移除某个字段 }; db.user.update(where,action);
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$inc":{"age":1}//年龄自增1,-1则为自减,该操作符只能作用于数值类型,否则会出异常 } db.user.update(where,action); db.user.find(where);
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$push":{"family.sons":"邓紫棋"}//往sons数组尾部添加一个元素,如果sons数组不存在,则会被创建 }; db.user.update(where,action);
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$push":{"family.sons":{"$each":["邓紫棋","邓小山","邓九妹"]}}//将数组中的元素循环添加到指定数组中 }; db.user.update(where,action);
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$push":{"family.sons":{"$each":["邓紫棋","邓涵一","邓涵之"],"$slice":-2}}//将数组中的元素循环添加到指定数组中 }; db.user.update(where,action);
{ "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$push":{"family.sons":{"$each":["邓紫棋","邓涵一","邓涵之"],"$sort":-1}}//排序可以按照某个字段排,也可以指定直接指定-1,0或1 }; db.user.update(where,action);
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$addToSet":{"family.sons":{"$each":["邓紫棋","邓涵夕"],"$sort":-1}}//addToSet只有当数组中没有该元素的时候才会往里面新增 }; db.user.update(where,action);
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$pop":{"family.sons":-1}//1:从数组头部删除一个元素,-1从数组尾部删除一个元素 }; db.user.update(where,action);
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$pull":{"family.sons":"邓涵一"}//删除指定数组中的所有的指定元素 }; db.user.update(where,action); db.runCommand("getLastError");
var where= { "_id":ObjectId("5634b21827480baffb199df4") }; var action= { "$inc":{"age":-5},//年龄自减5 "$set":{"family.sons.0":"邓紫棋"},//直接通过下标的形式修改sons数组中的第一个元素的值为:邓紫棋 }; db.user.update(where,action);
使用$定位:
var where= { "family.sons.name":"邓紫棋" }; var action= { //$符号自动定位匹配到的数组元素,例如第一个匹配到的数组元素下标为3,那么$实际上可以认为就是3 "$set":{"family.sons.$.name":"邓小山"}, }; db.user.update(where,action);
db.user.findAndModify({ query: {name: ‘a2‘}, //查询条件 sort: {age: -1}, //排序方式 update: {$set: {name: ‘张杰‘}, $inc: {age: 2}},//更新,或使用remove:true执行删除 new:true//返回更新后的文档 });
标签:
原文地址:http://www.cnblogs.com/Jabben/p/4926310.html