MongoDB的索引与交互

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值