目录
1.插入数据
插入单条数据 insertOne()
insertOne({"name":"zjk",'age':20,'add':'zhuhai'})
可插入不同类型的数据,遇见新的字段添加上去就是了,以 json 格式插入
批量插入数据 insertMany()
data_list = [
{'name':'抓紧','age':40,'addr':'china'},
{'name':'lalal','age':20,'addr':'us'},
{'name':'nbn','age':30,'addr':'ak'}
]
db.getCollection('example_data_1').insertMany(data_list)
无论是插入一条还是多条,都会生成一个唯一 _id 字段,是唯一的,任何机器,任何时间。任何进程来生成的
2.查询数据
双击集合中的名字,实际是执行了这条语句 db.getCollection('example_data_1').find({})
查询空值为 null,.find({'name':null})
三种显示模式
是 Robo 3T,提供的,树新模式,表格模式,文本模式
查询固定值顺序
(1)查询所有数据
db.getCollection('example_data_1').find({})
(2)查询特定数据
db.getCollection('example_data_1').find({'字段1':'值1','字段2':'值2'})
3.查询范围值数据
db.getCollection('example_data_1').find({'字段1':{'操作符1':边界1,'操作符2':边界2}})
查询 age 字段,大于等于 20,小于等于 30
db.getCollection('example_data_1').find({'age':{'$lte':30,'$gte':20}})
查询 age 字段,大于等于 20,小于等于 30,name 字段不等于 zjk
db.getCollection('example_data_1').find({'age':{
'$lte':30,
'$gte':20
},
'name':{
'$ne':'zjk'}
})
4.限定返回哪些字段 find({},{})
find() 有两个参数,第一个过滤不同的记录,第二个修改返回的字段,就是想要哪些返回,哪些不返回
第二个参数有两个值
- 0,表示返回的字段中,剔除值为 0 的值
- 1,表示只返回值为 1 的值
查询所有数据,但不返回,addr,age,这两个值
查询所有数据,只返回 name,age 字段
但都会返回 _id 字段,想要剔除可设为 0;
除了 _id 字段,其他字段不能 0,1 混用,要么全 1,要么全 0
5.修饰返回结果
(1)count()-----满足要求的数据有多少条
(2)limit()-----限定返回结果
查询结果多时,可以限定返回总数,不足的话,有多少就返回多少
(3)sort()-----对查询结果排序
sort({'字段名':-1 或 1}) ,1 代表正序,2 代表倒序
复制到 python 中是 sort('age',1)
6.更新数据 Updata()
updataOne() :更新一条
updataMany():更新多条
有两个参数,第一个和 find 的第一个参数一样,是一个字典,永凯寻找所需要被更新的记录;第二个也是一个字典,它的 Key 为 $set ,它的值为另一个字典,是需要被修改的字段名和新的值
更新 name 为 小二,age 修改为 20,添加 work 为 student,修改前后对比:
db.getCollection('example_data_1').updateMany(
{'name':'小二'},
{'$set':{'age':20,'work':'stident'}}
)
7.删除数据 delete()
deleteOne:删除一条
deleteMany:删除多条
删除 age 为 20 的数据,如下,第一个字段为 true 代表删除成功,第二个代表删除了多少条
8.数据去重 distinct()
两个参数,第一个去重字段,第二个去重条件(可选)
对 age 大于等于 18 的去重,
db.getCollection('example_data_1').distinct(
'age',
{'age':{'$gte':18}}
)