MongoDB增删改查
我就直接开门见山了,刚接触mongodb,记个笔记,有写的不对的路过的大佬可以指正哈。
使用的工具是:这两个,任意一个都OK.
增:
单条插入如下例 :
用insert()向students集合中添加:_id为1001,姓名为张三,年龄为20的文档。
//insert
db.students.insert({
"_id":"1001",
"name":"张三",
"age":20})
//注意符号括号什么的都要是英文半角,并且要对应.
多条插入如下例 :
//insertMany
db.students.insertMany([
{"_id":"1001","name":"程明","sex":"男","age":19,"major":"计算机应用技术","credits":52,score:92},
{"_id":"1002","name":"刘萍","sex":"女","age":18,"major":"移动应用开发","credits":51,score:88},
{"_id":"1003","name":"张静","sex":"女","age":20,"major":"计算机应用技术","credits":48,score:96})
save插入如下 :
用save()向students集合中添加:_id为1001,姓名为李白,年龄为30的文档。
db.students.save({
"_id":"1001","name":"李白","age":30});
//(此处save相当于在原有基础上做改动),insert插入的时候必须确保这个的唯一标识符不存在即本例中的_id,但是save是在唯一标识符冲突的时候在原有基础上进行改写,insert是只能够插入
insert插入例 :
向students中添加:姓名-张三,性别-男,年龄-19,地址-天心区,父母-(姓名-张三爸爸,年龄-49,工作-务农,姓名-张三妈妈,年龄-45,工作-教师),所选课程-[Java,MySQL],成绩-78。
db.students.insert({
... "name":"张三",
... "sex":"男",
... "age":19,
... "address":"天心区",
... parent:[
... { "name":"张三爸爸","age":49,"job":"务农"},
... {"name":"张三妈妈","age":45,"job":"教师"}],
... "course":["java","MySQL“],
... "score":78})
//注意括号以及符号
*循环重复插入 :*例如下
向test集合添加10000条数据,数据的内容为女朋友1号-女朋友10000号
for(i=1;i<=10000;i++){
... db.test.insert({
... "name":"女朋友"+i+"号"})}
查 :
例: 查询students表中的内容。
//全局查询
db.students.find()
例: 使用命令查看students集合中姓名为尼古拉斯赵四的文档
//单条件查询
db.students.find({"name":"尼古拉斯赵四"})
例: 使用命令查找students集合中的第一条记录
//查询第一条
db.students.findOne()
例: 使用命令显示students集合中的文档数
//.count()方法查询数量
db.students.find().count()
例: 查询计算机应用技术和软件技术专业成绩大于80分的学生姓名、性别、专业和成绩。
//多条件关键字查询
db.students.find({"score":{$gt:80}})
//下一篇写关键字
例: 查询计算机应用技术专业成绩在90分以上(包含),年龄为19-20岁女生信息
//多条件查询
db.students.find({
... major:"计算机应用技术",
... score:{$gte:90},
... age:{$gte:19,$lte:20}
... ,sex:"女"
... })
例: 查询专业为计算机应用技术和移动应用开发的男生的学号、姓名、性别、专业和总学分。
//多条件查询并管理显示
db.students.find({$and:[
{$or:[{major:"计算机应用技术"},
{major:"移动应用开发"}]},
{ sex:"男"}]},
{_id:1,name:1,sex:1,major:1,credits:1}
)
例: 查询岳麓区20岁学生的姓名、性别、年龄和协会信息,要求只显示加入的第二个和第三个协会
db.students.find({
$and:[{address:"岳麓区"},{age:20}]},
{name:1,sex:1,age:1,community:{$slice:[1,2]}})
//slice关键字
例: 查询所有男生的姓名,性别,年龄信息,并且按照年龄的降序显示。
db.students.find({
sex:"男"},{name:1,sex:1,age:1}).sort({age:-1})
//类似例题中,,如果sort是1那就是升序
例 : 查询地址不在天心区和开福区的前三个学生信息。
db.students.find({
$and:[{address:{$nin:["天心区","开福区"]}},
{address:{$exists:true}}]}).limit(3)
例: 查询软件技术专业成绩在60分以下(包含),年龄为19-20岁女生信息(要求:要包含$where查询)。
db.students.find({
$and:[{"$where":"this.score<=60"},
{sex:"女"},
{age:{$gte:19,$lte:20}}]})
例: 显示年龄的150倍大于工资的教师信息。
改:
例:使用$set修改器为姓名为于谦的记录添加一个爱好字段,于谦有三大爱好:抽烟,喝酒,烫头
db.users.update({"name":"于谦"},{$set:{"hobbies":["抽烟","喝酒","烫头"]}})
例:将所有年龄为19岁的学生成绩一律减少30分
db.students.update({"age":19},{$inc:{"score":-30}})
例: 删除“张三”的年龄、课程与成绩字段
db.students.update({"name":"张三"},{$unset:{"age":1,"course":1,"score":1}})
例:向“张三”添加课程C语言
db.students.update({"姓名":"张三"},{$push:{"course":"C语言"}})
例:向“王五”的课程追加多个元素:“点穴保健DIY”和“葵花宝典入门”。
//此处也可以使用pushAll关键字,但是在3.4版本之后push和pushall合并了
db.students.update({"name":"王五"},{$push:{"course":{$each:["点穴保健DIY","葵花宝典入门"]}}})
例: 向“王五”的课程追加多个元素:“装B技巧”和“Java”。【要求:插入的元素不能重复。提示: a d d T o S e t 和 addToSet和 addToSet和each】
db.students.update({“name”:”王五”},{$addToSet:{“course”:{$each:[“装B技巧”,”java”]}}})
例:只保留“王五”的后面三门课程。
db.students.update({“name”:”王五”},{$push:{“course”:{$each:[],$slice:-3}}})
例:删除“赵六”的最后一门课程
db.students.update({“name”:”赵六”},{$pop:{“course”:1}})
例:删除“赵六”的“MySQL”这门课程
db.students.update({"name":"赵六"},{$pull:{"course":"MySQL"}}))))
例:将所有成绩在80-90之间的学生等级grade设置为优秀,总学分加上0.5。
db.students.update({
score:{$gte:80,$lte:90}},
{$set:{grade:"优秀"},
$inc:{credits:+0.5}}
)
例: 将工资高于4500的男讲师的职称修改为副教授。
db.teachers.update({
$and:[{salary:{$gt:4500}},
{sex:"男"}]},{$set:{prof:"副教授"}})
例:将1号部门年龄小于30岁的女讲师的部门更新为3。
删:
例: 使用命令删除students集合中姓名为尼古拉斯赵四年龄为20的文档
db.students.remove({"name":"尼古拉斯赵四","age":20})
例:使用命令删除test集合中的所有文档
db.test.remove({})
例: 删除成绩不及格或者总学分小于45的学生
db.students.remove({
$or:[{score:{$lt:60}},{credits:{$lt:45}}]
})
例:删除软件技术专业和移动应用开发专业成绩在60-70的男生
//对准括号
db.students.remove({
$and:[{score:{$lte:70,$gte:60}},
{$or:[{major:"软件技术"},
{major:"移动应用开发" } ]}]})
例 :删除1号和2号部门,工资在3000-5000之间的,年龄小于35的教师信息。
db.teachers.remove({
$and:[{$or:[{dept:1},{dept:2}]},
{salary:{$gt:3000,$lt:5000}},{age:{$lt:35}}]})
基本上常用的一些增删改查操作的就这些了。