MongoDB文档增删改查

语法:db.集合名.insert(JSON数据)

说明:集合存在,则直接插入数据,集合不存在-隐式创建

练习:在test2数据库的c1集合中插入数据(名字叫:张三 年龄18岁)

1
2
3
4
5
use test2
db.c1.insert({uname:'张三',age:18})
注意1:数据库和集合不存在都隐式创建
注意2:对象的键统一不加引号方便看,但是查看集合数据时系统会自动加
注意3:mongodb会给每条数据增加一个全球唯一的_id键,由时间戳、机器、PID、和计数器决定

image-20210616220841037

是否可以自定义_id?

1
2
回答:可以,只需要给插入的JSON数据增加_id键即可覆盖(但强烈不推荐)
db.c1.insert({_id:1,uname:'lisi',age:19})

image-20210616221420482

如何一次性插入多条数据

1
2
3
4
5
6
回答:传递数据,数组中写一个个json数据即可
db.c1.insert([
{uname:'q1',age:3},
{uname:'w2',age:4},
{uname:'e3',age:5}
])

image-20210616221944644

如何快速插入10条数据

1
2
3
4
5
6
7
8
9
10
回答:mongodb底层使用JS引擎实现的,所以支持部分js语法
因此,可以写for循环
for(var i=0;i<=10;i++){
print(i);
}
需求:在test2数据库c2集合中插入10条数据,分别为a1 a2 a3...a10
use test2
for(var i=1;i<=10;i++){
db.c2.insert({uname:"a"+i,age:i})
}

image-20210616222519912

基础语法:db.集合名.find(条件 [,查询的列])

1
2
3
4
5
6
7
8
9
条件
查询所有数据 {}或者不写
查询age=6的数据 {age:6}
既要age=6又要性别=男 {age:6,sex:'男'}
查询的列(可选参数
不写-查询全部列(字段)
{age:1} 只显示age列(字段)
{age:0} 除了age列(字段都显示)
注意:不管怎么写系统自定义的_id都会在

升级语法

1
2
3
4
5
db.集合名.find(键:值) 注:值不直接写
{运算符:值}
db.集合名.find({
键:{运算符:值}
})
运算符 作用
$gt 大于
$gte 大于等于
$lt 小于
$lte 小于等于
$ne 不等于
$in in
$nin not in

练习1:查询所有数据

image-20210616223245050

练习2:查询年龄大于5岁的数据

image-20210616223746047

练习3:查询年龄是5岁、8岁、10岁的数据

image-20210616223930556

基础语法:db.集合名.update(条件,新数据[,是否新增,是否修改多条])

1
2
是否新增:指条件匹配不到数据则插入(true是插入,false否则不插入)
是否修改多条:指将匹配成功的数据都修改(true是,false否默认)

升级语法:

1
2
db.集合名.update(条件,新数据)
{修改器:{键:值}}
修改器 作用
$inc 递增
$rename 重命名列
$set 修改列值
$unset 删除列

准备工作

1
2
3
4
use test2;
for(var i=1;i<=10;i++){
db.c3.insert({"uname":"zs"+i,"age":i});
}

练习1:将zs1的数据改为zs2

image-20210616225456678

1
2
3
4
默认不是修改,而是替换
解决:使用升级语法 修改器
需求:使用修改器将zs3的性名改为zs33
语法:db.c3.update({uname:"zs3"},{$set:{uname:"zs33"}})

image-20210616230041592

练习2:给{uname:”zs10”}的年龄加2岁或者减2岁

image-20210616230424231

image-20210616230603546

练习3:修改器综合练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
插入数据:db.c4.insert({uname:"神龙教主",age:888,who:"男",other:"非国人"});
完成需求:
uname:改成金轮法王 (修改器:$set)
age:增加111 (修改器:$inc)
who改字段sex (修改器:$rename)
other删除 (修改器:$unset)
语法分析:
db.c4.update({uname:"神龙教主"},{$set:{uname:"金轮法王"}})
{$inc:{age:111}}
{$rename:{who:"sex"}}
{$unset:{other:true}}
注意:如何一次性写多个修改器
db.c4.update({uname:"神龙教主"},
{$set:{uname:"金轮法王"},
$inc:{age:111},
$rename:{who:"sex"},
$unset:{other:true}
})

image-20210616232215844

练习4:验证语法最后两个参数(了解)

验证:是否新增true是false否:修改uname等于zs30的年龄 30岁

image-20210616233329079

验证:是否修改多条,true是,false否

image-20210616233809827

语法:db.集合.remove(条件,[,是否删除一条])

注意:是否删除一条,true是,false否 (默认)

image-20210616234155235

增删改查总结

增Create

1
db.集合名.insert(JSON数据)

删Delete

1
2
db.集合名.remove(JSON数据,[,是否删除一条true是false否默认])
也就是默认删除多条

改Update

1
2
db.集合名.update(条件,新数据 [,是否新增,是否修改多条])
升级语法db.集合名.update(条件,{修改器:{键:值}})

查Read

1
db.集合名.find(条件 [,查询的列])

MongoDB文档增删改查
https://blog-theta-ten.vercel.app/2021/06/17/MongoDB文档增删改查/
作者
Chen
发布于
2021年6月17日
许可协议