03-MongoDB的索引与交互
一.操作查询结果
1.skip #跳过
db.stu3.find().skip(2) # 跳过前面两条 从第三条开始显示
db.stu3.find().skip(-2) # 错误 不能为负数
2.limit #限制
db.stu3.find().limit(3) # 限制打印的数量 返回前三条
db.stu3.find().limit(-1) # 返回第一条
db.stu3.find().limit(11) # 如果限制的条数 高于表里面的数量 将返回所有的
3.count # 计数
db.stu3.find().count() # 返回查询的总记录条数 数量
4.排序
#根据什么顺序?指定字段 降序?升序?
#所有数据根据age字段进行升序(小到大)
db.stu3.find().sort({age:1})
#所有数据根据age字段进行降序(大到小)
db.stu3.find().sort({age:-1})
#先找到所有家乡为深圳的数据
db.stu3.find({hometown:“深圳”})
#基于找到的数据基础上进行排序
db.stu3.find({hometown:“深圳”}).sort({age:-1})
#注意:1 升序 -1 降序 只能写1和*1
5. 映射 控制输出字段的
#只显示所有的name字段
#如果{}去掉 查询的是name=1的数据
#我们的数据是一json格式传入的 可以理解1是个占位符 可以是2 3 建议用1
db.stu3.find({},{name:1}) # _id字段会自动显示
#不显示_id字段 只显示name字段
#将需要显示的字段设置为1 不显示的设置为0
db.stu3.dind({},{name:1,_id:0})
#只显示name字段和age字段
db.stu3.find({},{name:1,age:1})
#不显示name和age字段
db.stu3.find({},{name:0,age:0})
db.stu3.find({},{name:0,age:1}) # 报错 非_id字段 0和1 不能同时存在
#注意:1表示显示 0表示不显示 表示_id字段 0和1不能一起存在!!!
二.修改数据
基本语法
db.表名.update({query},{update},{mulit})
1.{query} 查询条件
2.{update} 更新的内容
3.{mulit} 默认是false
#张三–>zhangsan
db.stu3.update({name:'张三'},{name:'zhangsan'}) # 修改整条数据
#只想更改数据中的一个字段 jerry -->jack
db.stu3.update({name:'jerry'},{$set:{name:'jack'}})
#更改所有 jerry --> jack
db.stu3.update({name:"jerry"},{$set:{name:"jack"}},{mulit:true})
#找到name=老六 就跟改成name=old six 没有找到就新增一条name=old six的数据
db.stu3.update({name:'老六'},{name:'old six'},{mulit:true})
三.删除数据库
删除数据库
db.dropDatabase()
删除表
db.表名.drop()
删除表下所有的数据 表还在
db.表名.remove() # 如果表设置了上限 无法删除 会报错
指定条件删除
#删除name=jack的值
#如果表里面有多条name=jack的数据 都会被删除 默认删除全部符合条件的数据
db.stu3.remove({name:'jack'})
#只想删除一个name=jack的数据
db.stu3.remove({name:'jack'},{justOne:true}) # One是大写
四.MongoDB中的索引
索引:加快查询数据
#插入实例数据
for(i=0;i<100000;i++){db.test.insert({name:'test'+i,age:1})}
1.创建索引
#为name字段创建索引
db.test.ensureIndex({name:1})
运行结果
{
“createdCollectionAutomatically” : false,
“numIndexesBefore” : 1, # 创建之前有一个索引_id
“numIndexesAfter” : 2, # 创建之后
“ok” : 1
}
2.创建索引之前v创建之后
#查看当前数据用了多久时间
db.表名.find({name:'test99999'}).explain('executionStats')
db.test.find({name:'test99999'}).explain('executionStats')
创建索引之前花费的时间: “executionTimeMillis” : 41,(毫秒)
创建索引之后花费的时间:(肯定会变快,时间变少)
3查看索引
db.表名.getIndexes()
db.test.getIndexes()
4.删除索引
#删除指定索引
db.表名.dropIndex({name:1})
#删除所有索引(除开_id)
db.表名.dropIndexes()