mongodb创建数据库,创建集合(表),实现增删改查

mac上安装mongodb传送门

首先在终端上,我们先执行mongo 来启动运行mongodb

在这里插入图片描述

一. 查看所有数据库

show dbs

在这里插入图片描述

二. 创建数据库yango_db

use yango_db

在这里插入图片描述
注:这里还并没有在本地创建该数据库,需要在该数据库添加集合(表)之后才算真正创建了
在这里插入图片描述

三. 创建user集合(表),也是插入数据

db.user.insert({"name":"小二",age:18})

注意:mongodb的数据和json数据一样,格式要正确
在这里插入图片描述

四. 显示当前数据集合

show collections

在这里插入图片描述

五. 删除当前集合

在这之前我们先创建多一个admin集合,方便查看,下面删除user集合

db.user.drop()

在这里插入图片描述

六. 删除数据库

db.dropDatabase()

在这里插入图片描述

七. 查询数据

1. 查询user集合所有数据

db.user.find()

注意:在操作增删改查之前,需要先use yango_db进入到当前数据库中
在这里插入图片描述

2. 条件查询,查询age=18的数据

db.user.find({"age": 18})

在这里插入图片描述

3. 条件查询,查询age>24的数据$gt

db.user.find({"age": {$gt: 24}})

在这里插入图片描述

4. 条件查询,查询age>=24的数据$gte

db.user.find({"age": {$gte: 24}})

在这里插入图片描述

5. 条件查询,查询age<20的数据$lt

db.user.find({"age": {$lt: 20}})

在这里插入图片描述

6. 条件查询,查询age<=20的数据$lte

db.user.find({"age": {$lte: 20}})

在这里插入图片描述

7. 模糊查询,查询name包含‘李’字的数据/李/

db.user.find({"name": /李/})

在这里插入图片描述

8. 模糊查询,查询name以‘李’字开头的数据/^李/

db.user.find({"name": /^李/})

在这里插入图片描述

9. 模糊查询name以‘六’结尾的数据/六$/

db.user.find({"name": /六$/})

在这里插入图片描述

10. 查询指定列(字段)的数据,如name,age

下面只查询name的字段, 注意:要查询那个字段就写该字段=1,比如{name: 1},如果只查询age字段就{age: 1},_id是自带的。

db.user.find({},{name: 1})

在这里插入图片描述
也可以添加条件,比如age>20的数据,且只显示age字段

db.user.find({"age": {$gt: 20}}, {age: 1})

在这里插入图片描述

11. 排序查询sort,升序:1,降序:-1

下面按照age升序排序

db.user.find().sort({age: 1})

在这里插入图片描述
下面按照age降序排序

db.user.find().sort({age: -1})

在这里插入图片描述

12. 查询前2条数据limit

db.user.find().limit(2)

在这里插入图片描述

13. 查询第4条(不包含第4条)之后的数据skip

注意: 计数从0开始

db.user.find().skip(4)

在这里插入图片描述
到这里可以结合limit实现分页查询,比如查询第4条到第6条数据(实际5,6两条)

db.user.find().skip(4).limit(2)

在这里插入图片描述
可以总结分页算法,比如page是页数,num为每一页显示的记录条数,那么算法为:skip((page-1) * num).limit(num)。比如要查询第3页,每页显示10条数据,那么查询为skip(20).limit(10)

14. or 和 查询 $or

查询age=20或者age=22的数据

db.user.find({$or: [{"age": 20},{"age": 22}]})

在这里插入图片描述

15. 查询第一条数据findOne

db.user.findOne()

相当于limit(1)
在这里插入图片描述

16. 查询数据数量(长度)count

db.user.find().count()

在这里插入图片描述

八. 修改数据update

比如要将name=张三的的名字改为张三丰

db.user.update({"name": "张三"}, {$set: {"name": "张三丰"}})

注意: $set一定加上,否则将不是更新,而是整条数据替换掉
在这里插入图片描述
以上为单条数据修改,如果要皮 批量修改的话,需要在后面添加{multi: ture}

九. 删除数据remove

比如要删除age=18的数据

db.user.remove({age: 18})

在这里插入图片描述
注意:remove需要添加条件删除指定的数据,如果不添加条件,则是删除所有数据

db.user.remove({})

在这里插入图片描述
如果条件中有多条数据,又想只删除一条数据,可以在后面添加{justOne: true}

10. 索引基础

1. 查询所需时间

在所查询语句后面添加.explain('executionStats'),例如:

db.user.find({"name": "yy99"}).explain('executionStats')

在这里插入图片描述
上面3万多条数据需要19毫秒,如果数据量几百万或者几千万的时候所用的时间更长,所以这时候需要设置索引查询

2. 创建索引命令db.集合名.ensureIndex({"字段名": 1}), 1为升序,-1为降序

db.user.ensureIndex({"name": 1})

在这里插入图片描述

3. 获取当前集合索引db.集合名.getIndexes()

db.user.getIndexes()

在这里插入图片描述
这时候我们再进行查询刚才的数据看看需要多少时间

db.user.find({"name": "yy99"}).explain('executionStats')

在这里插入图片描述
再次查询时候执行时间变成0毫秒

4. 删除索引db.集合名.dropIndex({"字段": 1})

db.user.dropIndex()

在这里插入图片描述

11. 复合索引

db.user.ensureIndex({"name": 1, "age": 1})

该索引被创建后,基于name和age的查询将会用到该索引,或者是基于name的查询也会用到该索引,但是只是基于age的查询将不会用到该索引。因此可以说,如果想用到复合索引,必须再查询条件中包含复合索引中的前N个索引列。然而如果查询条件中的键值和复合索引中的创建顺序不一致的话,MongoDB可以智能的帮助我们调整顺序,以便使复合索引可以为查询所用。例如:

db.user.find({age: 30, "name": "yy99"})

12. 唯一索引(类似sql主键)

db.user.ensureIndex({"age": 1},{"unique": true})

注意:如果age有重复值的话,设置就会报错。如果设置成功,再插入数据中age有重复字段也会报错,因为age设置了唯一索引

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值