来源:我的博客站 OceanicKang |《MongoDB 数据操作(三)数据更新(2)修改器》
上一篇:《MongoDB 数据操作(三)数据更新(1)更新函数》
对 MongoDB 数据库而言,数据的修改会牵扯到内容的变更、结构的改变(包含数组)
所以在 MongoDB 设计的时候,就提供有一系列的修改器的应用,如之前的 $set
就是一个修改器
1、$inc
:针对数字字段,增加某个数字字段的数据内容
# 将年龄为 19 的成员的成绩全部减30,并且年龄+1
> db.students.update(
{"age": 19},
{"$inc": {"score": -30, "age": 1}}
, false, true);
2、$set
:进行内容的重新设置
# 将年龄为 19 的成员的成绩全部改为 100
> db.students.update(
{"age": 19},
{"$set": {"score": 100}}
, false, true);
3、$unset
:删除某个字段的内容
# 删除张三的年龄和成绩
> db.students.update(
{"name": "张三"},
{"$unset": {"age": 1, "score": 1}}
);
4.1、$push
:将内容追加到指定字段之中,数组追加
# 给张三追加一门体育课
> db.students.update(
{"name": "张三"},
{"$push": {"course": "体育"}}
);
4.2、$push
:一次追加多个内容到数组里
# 给张三A追加三门课
> db.students.update(
{"name": "张三 A"},
{"$push":
{"course":
{"$each": ["美术", "音乐", "舞蹈"]}
}
}
);
5、$addToSet
:向数组里面添加一个不存在的内容,存在则不添加
> db.students.update(
{"name": "张三 A"},
{"$addToSet":
{"course":
{"$each": ["美术", "音乐", "舞蹈", "体育"]}
}
}
);
6、$pop
:删除数组内的数据
# 删除张三A的第一门课程
> db.students.update(
{"name": "张三 A"},
{"$pop":
{"course": -1}
}
);
# 删除张三A的最后一门课程
> db.students.update(
{"name": "张三 A"},
{"$pop":
{"course": 1}
}
);
7、$pull
:从数组内删除一个指定数据
# 删除张三A的舞蹈课
> db.students.update(
{"name": "张三 A"},
{"$pull":
{"course": "舞蹈"}
}
);
8、$pullAll
:从数组内删除多个指定数据
# 删除张三的多个课程
> db.students.update(
{"name": "张三"},
{"$pullAll":
{"course": ["语文", "数学", "英语"]}
}
);
9、$rename
:为字段名称重命名
# 将张三的 name 字段改名为 "姓名"
> db.students.update(
{"name": "张三"},
{"$rename":
{"name": "姓名"}
}
);