MongoDB基本操作之Update
?
update方法参数
?
?
?
//query:更新的条件
//obj:更新的对象
//Boolean类型,true:没有则新增,false:只更新不新增
//multi:是否允许批量更新
function (query, obj, upsert, multi) {
}
?
文档替换:
?
var where=
{
? ? "age":29
};
var p1 = db.user.findOne(where);
p1.age++;//年龄自增1
db.user.update(where,p1);//将匹配到的第一个文档整个替换成新的文档
?
常用修改器:
?
"$set"修改器:$set修改器用于修改文档中的某个字段的值,如果该字段不存在则会新增该字段。
?
?
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);
?
"$inc"修改器:自增或自减修改器,原子性操作。
?
?
var where=
{
? ? "_id":ObjectId("5634b21827480baffb199df4")
};
var action=
{
? ? "$inc":{"age":1}//年龄自增1,-1则为自减,该操作符只能作用于数值类型,否则会出异常
}
db.user.update(where,action);
?
db.user.find(where);
?
"$push"操作符:向一个数组的末尾添加一个元素,如果指定数组不存在,则该数组会被创建
?
?
var where=
{
? ? "_id":ObjectId("5634b21827480baffb199df4")
};
var action=
{
? ? "$push":{"family.sons":"邓紫棋"}//往sons数组尾部添加一个元素,如果sons数组不存在,则会被创建
};
db.user.update(where,action);
?
"$each"操作符:$push操作符配合$each操作符能实现一次往数组中添加多个元素
?
?
var where=
{
? ? "_id":ObjectId("5634b21827480baffb199df4")
};
var action=
{
? ? "$push":{"family.sons":{"$each":["邓紫棋","邓小山","邓九妹"]}}//将数组中的元素循环添加到指定数组中
};
db.user.update(where,action);
?
"$slice"操作符:用于设置数组的长度,当值为正数时,只保留数组中的前N个元素,为负数时,保留数组中的最后N个元素
?
?
var where=
{
? ? "_id":ObjectId("5634b21827480baffb199df4")
};
var action=
{
? ? "$push":{"family.sons":{"$each":["邓紫棋","邓涵一","邓涵之"],"$slice":-2}}//将数组中的元素循环添加到指定数组中
};
db.user.update(where,action);
?
"$sort"操作符:对数组中的元素进行排序
?
?
{
? ? "_id":ObjectId("5634b21827480baffb199df4")
};
var action=
{
? ? "$push":{"family.sons":{"$each":["邓紫棋","邓涵一","邓涵之"],"$sort":-1}}//排序可以按照某个字段排,也可以指定直接指定-1,0或1
};
db.user.update(where,action);
?
"$addToSet"操作符:往数组中添加新元素且只有当数组中不存在的时候才会新增
?
?
var where=
{
? ? "_id":ObjectId("5634b21827480baffb199df4")
};
var action=
{
? ? "$addToSet":{"family.sons":{"$each":["邓紫棋","邓涵夕"],"$sort":-1}}//addToSet只有当数组中没有该元素的时候才会往里面新增
};
db.user.update(where,action);
?
"