mongodb常用命令

本文详细介绍了MongoDB的常用命令,包括数据库的启动、连接、查看与删除,集合的创建、删除与查看,文档的插入、查询、更新和删除,索引的类型、查看、创建与删除,以及执行计划的查看。这些基础命令对于理解和操作MongoDB数据库至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

一、数据库

1.启动mongodb

2.连接服务

3.查看数据库

4.切换数据库

5.查看当前使用的数据库

6.删除数据库

 二、集合(表)

1.创建集合

2.删除集合

3.查看集合

 三、文档(行数据)

1.插入文档

2.查询

3.投影查询

4.更新

5.删除

6.统计查询

7.分页查询

8.排序查询

9.模糊查询

10.比较查询

11.包含查询

12.条件连接查询

四、索引

1.索引类型

2.查看索引

3.创建索引

4.删除索引

五、执行计划

1.查看执行计划

总结


前言

很多企业都在使用mongdb,因此学习mongdb是非常有用的,今天就在这篇文章中记录一下常用的mongodb的命令,毕竟好记性不如烂笔头。


一、数据库

1.启动mongodb

mongod --dbpath=..\data\db  #--dbpath指定启动的服务的db存储路径

2.连接服务

mongo --host=127.0.0.1 --port=27017

如果不指定地址,也是可以的,会自动寻找本地的mongodb服务进行连接。

3.查看数据库

show dbs

4.切换数据库

use db        #如果数据库不存在会自动创建

这里需要说明,当我们切换一个不存在的数据库时,会自动创建一个新的数据库,但是此时数据库是存放在内存当中,并没有持久化到磁盘中,所以此时使用show dbs查看,是没有这个新的数据库的,只有这个数据库中存在一个集合,这个库才会持久化到磁盘中。

5.查看当前使用的数据库

db

6.删除数据库

db.DropDatabase()

 二、集合(表)

1.创建集合

  • 显示创建
db.createCollection("demo")        #创建名为demo的集合

2.删除集合

db.demo.drop()    #demo是要删除的集合名称

3.查看集合

show collections

 三、文档(行数据)

1.插入文档

db.stu.insert({"name":"zhangsan","age":"18","creted_time":new Date()})    #在stu集合中插入一个文档

db.stu.insertMany([{"name":"zhangsan","age":"18","creted_time":new Date()},
{"name":"lisi","age":"19","creted_time":new Date()},
{"name":"wangwu","age":"20","creted_time":new Date()},
{"name":"zhaoliu","age":"21","creted_time":new Date()},
])    #在stu集合中插入多个文档

2.查询

db.stu.find()    #查询stu集合的所有文档

db.stu.find({"name":"zhangsan"})    #查询stu集合中name为zhangsan的文档

db.stu.findOne({"name":"zhangsan"})    #查询stu集合中name为zhangsan的文档,结果只返回第一条数据

3.投影查询

这里其实就是MySQL中的select具体字段,而不是select *

db.stu.find({"name":"zhangsan"},{age:1}))        #查询结果只显示age字段

db.stu.find({"name":"zhangsan"},{age:1,_id:0}))  #查询结果只显示age字段,排除id

4.更新

  • 单条更新
#将主键为1的文档的age更新为50
db.stu.update({_id:"1"},{age:"50"})        #覆盖更新

db.stu.update({_id:"2"},{$set:{age:"30"}})    #只修改文档的age字段

 覆盖更新的方式会导致当前文档只剩下age字段。

另外说明mongodb默认只修改一条数据,如果符合查询条件的数据有多条,那么也只会修改第一条。

  • 批量修改命令如下:
#将所有name为张三的年龄修改为28
db.stu.update({name:"zhangsan"},{$set:{age:NumberInt(28)}},{multi:true}) 

NumberInt(28)将默认的double类型转为int32类型,如果不进行转换,那么默认存储类型为浮点数。

  • 列值增长修改
#让张三的age+1
db.stu.update({name:"zhangsan"},{$inc:{age:NumberInt(1)}})    #修改第一条

5.删除

  •  指定条件删除
#删除所有name为zhangsan的文档
db.stu.remove({name:"zhangsan"})
  • 删除所有 
db.stu.remove({})

6.统计查询

  • 统计文档数量
db.stu.count()
  • 按条件统计 
db.stu.count({name:"zhangsan"})

7.分页查询

  • 基本语法
db.集合名.find().limit(返回数量).skip(跳过数量)
  •  示例
#查询stu集合,返回前两条数据
db.stu.find().limit(2)

#查询stu集合,跳过前三条数据
db.stu.find().skip(3)

8.排序查询

  • 基本语法
db.集合名.find().sort({key:1,key2:1,key3:1,...})
  •  示例
#stu集合根据age升序排序
db.stu.find().sort({age:1})

#stu集合根据age降序排序
db.stu.find().sort({age:-1})

#投影查询,stu集合根据age升序排序
db.stu.find({},{age:1}).sort({age:1})

9.模糊查询

  • 基本语法
db.集合名.find({field:/正则表达式/})
  •  示例
#查询stu中name包含i的记录
db.stu.find({name:/i/})

#查询stu中name以i开头的记录
db.stu.find({name:/^i/})

10.比较查询

  • 基本语法
#field > value
db.集合名.find({"field":{gt:value}})

#field < value
db.集合名.find({"field":{lt:value}})

#field >= value
db.集合名.find({"field":{gte:value}})

#field <= value
db.集合名.find({"field":{lte:value}})

#field != value
db.集合名.find({"field":{ne:value}})

这里需要注意的是:如果是int类型的比较,需要使用类型转换函数NumberInt()进行转换;另外,需要字段的类型也是int类型。

11.包含查询

#stu集合中age在20,21的
db.stu.find({age:{$in:["20","21"]}})

#stu集合中age不在在20,21的
db.stu.find({age:{$nin:["20","21"]}})

12.条件连接查询

  • 基本语法
$and:[{条件1},{条件2},...]
  • 示例 
#查询age=20并且name=zhangsan的文档
db.stu.find({$and:[{age:"20"},{name:"zhangsan"}]})


#查询age=20或者name=zhaoliu的文档
db.stu.find({$or:[{age:"20"},{name:"zhaoliu"}]})

#查询age大于20并且name=zhaoliu的文档
db.stu.find({$and:[{age:{$gt:NumberInt(20)}},{name:"zhaoliu"}]})

四、索引

mongodb索引使用的是B树。

1.索引类型

  1. 单字段索引:在文档的单个字段上创建用户定义的升序降序索引。索引键的排序顺序不重要,mongodb可以在任何方向上遍历索引。
  2. 复合索引:对文档中多个字段进行排序,复合索引中的字段排序具有先后顺序,假设索引:{userid:1,score:-1},则索引先按照userid正序排序,再按照score倒序排序。
  3. 地理空间索引
  4. 文本索引:
  5. 哈希索引:只支持等值匹配,不支持范围查询

2.查看索引

db.集合名.getIndexes()

3.创建索引

#给userid,score添加索引
db.集合名.createIndex({userid:1,score:1})

4.删除索引

#删除userid索引
db.集合名.dropIndex({userid:1})


#通过索引名删除索引
db.集合名.dropIndex("userid_1")

#删除所有索引
db.集合名.dropIndexes()

五、执行计划

1.查看执行计划

db.集合名.find(query,options).explain(options)

#查看根据userid查询的执行计划
db.stu.find({userid:"1001"}).explain()

在结果中,主要关注winningPlan:

如果stage为collscan就说明是全集合扫描,fetch为抓取,就表明使用到了索引。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了mongodb的基本命令的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值