MongoDB数据库的概述和基本使用

目录

1. MongoDB是什么?

2. 为什么需要学习?

3. MongoDB的特点?

4.安装

5.基本命令

6.insert()

7.save()

8.基本查询

9.聚合查询,排序,映射

10.修改

11.删除

12.创建索引


1. MongoDB是什么?

MongoDB是一个非关系型数据库(No sql)

2. 为什么需要学习?

  • 企业需求

  • 爬虫爬取数据到一个量级 使用MongoDB比mysql好一些

3. MongoDB的特点?

  • 无数据结构 (方便爬虫)

  • 高性能(具有非常高的读写能力)

  • 良好支持(完善文档,跨平台 ,稳定)

4.安装

  1. 下载安装文件(msi, 自己下载 用老师的)

  2. 安装

  3. 把bin目录添加到path环境变量里(C:\Program Files\MongoDB\Server\4.2\bin)

启动 MongoDB

mongodb --dbpath C:\Program Files\MongoDB\Server\4.2\data

连接MongoDB

mongo

5.基本命令

show dbs   展示数据库
cls 清屏命令
use admin  使用数据库/创建数据库
db   查看当前在使用的数据库
show collections / show tables 查看当前使用数据库的集合(表)
db.dropDatabase()  删除当前使用的数据库

6.insert()

Collection 集合 ---> 表

Document文档 ---> 一行数据

不手动创建表(当没有这个表的时候,插入一条数据 表自动创建)

  • db.mark.insert({x:1})

手动创建表

db.createCollection(name,options)

  • name:创建的集合名称
  • options:是一个文档,指定集合的配置
  • capped: Boolean类型 默认False 没有设置上限 True 有上限
  • size: number 表示设置上限的大小 字节 如果你设置的大小<256 , 默认为256
  • max: number 指定上限集合中允许的最大文档数量
db.createCollection('mark1')
db.createCollection('mark1',{capped:true,size:5000,max:4})
​
db.mark.isCapped() 检测当前集合有没有设置上限   false 没有   true 有
db.mark1.drop()    删除集合(表)
​
​
插入多条数据
db.mark1.insert([{name:'mark',age:18,sex:'male'},{name:'amy'}])  # 注意[]
for(i=3;i<10;i++)db.mark1.insert({x:i})
​
db.createCollection('mark1')
db.createCollection('mark1',{capped:true,size:5000,max:4})
​
db.mark.isCapped() 检测当前集合有没有设置上限   false 没有   true 有
db.mark1.drop()    删除集合(表)
​
​
插入多条数据
db.mark1.insert([{name:'mark',age:18,sex:'male'},{name:'amy'}])  # 注意[]
for(i=3;i<10;i++)db.mark1.insert({x:i})
​

7.save()

# 指定_id ,找到就更新,反之就插入
db.mark1.save({_id:1,name:'amy'})  
db.mark1.save({name:'amy'})

8.基本查询

# 基本查询
db.mark1.find({name:'mark'})  # 精确查询
db.mark1.find({name:'mark'}).pretty()   # 以格式化的方式显示结果
​
db.mark1.findOne({age:18})   # 符合条件第一条数据
db.mark1.findOne({age:18,id:1})  # 多条件查询
​
​
# 基本符号
$gt : > 
$lt : < 
$gte: >= 
$lte: <= 
$ne : !=、$amp;$in : in 
$nin: not in 
$all: all 
$not: 反匹配(1.3.3及以上版本)
​
# 定义方法查询  
db.mark1.find({$where:function(){return this.age>18}})
​
逻辑与或
> db.user.find({"name":"xiaolan"})
​
> db.user.find({"name":"xiaolan","hobby":["song1","writebook"]})  --- 直接写多个,中间以,隔开
> db.user.find({$or:[{"name":"xiaolan"},{"age":"10"}] })   --或:以$or开头,后面跟的是[]  
db.mark1.find({$and:[{age:{$gt:18}},{home:'长沙'}]})
db.mark1.find({$or:[{age:{$gt:18}},{home:'长沙'}]})
​
​
# 模糊查询
> db.user.distinct('name');   --去掉重复数据
> db.user.find({name:/ao/})   --模糊查询    注意:必须有{}
> db.user.find({name:/^ao/})  --模糊查询    以ao开头
> db.user.find({name:/ao$/})  --模糊查询    以ao结尾
​

9.聚合查询,排序,映射

# 查看集合里数据个数
db.mark9.find().count()
db.mark9.count()
​
# 查看符合条件数据个数
db.mark9.find({age:18}).count()
db.mark9.count({age:18})
​
# 查看前几条数据  限制个数  不分负号
db.mark9.find().limit(2)
db.mark9.find().limit(-2)
​
# 跳过
# 先跳过2条数据,在返回满足结果的前2条数据
db.mark9.find().skip(2).limit(2)
​
​
# 映射 : 返回指定的字段,相当于SQl的Select
# 如果为1返回该字段  _id:0
# 只显示age字段
db.mark9.find({},{age:1})
db.mark9.find({},{age:1,_id:0})
​
​
# 排序
db.mark9.find().sort({age:1})    # 按照年龄升序
db.mark9.find().sort({age:-1})   # 按照年龄降序

10.修改

db.集合名.update()

  1. query :查询条件

  2. update: 更新的内容

  3. multi: 默认是false 表示只更新第一个符合条件的数据 true 把所有满足条件数据全部更新

 db.mark9.update({name:'mark'},{name:'马克'})  # 正常更新,但是后面数据不保留
 db.mark9.update({name:'张三'},{$set:{name:'罗翔'}})  # 指定键值更新 保留其余数据
 
 db.mark9.update({sex:'女'},{$set:{sex:0}},{multi:true})

11.删除

db.mark1.drop()
​
db.mark1.remove()   # 删除全部
db.mark9.remove({age:18},{justOne:true})  # 删除满足条件一个数据
db.mark9.remove({age:18},{justOne:1})  # 删除满足条件一个数据
db.mark9.remove({age:18},{justTwo:true})
​
db.mark9.remove({age:18},{justThree:true})
......
= db.mark9.remove({age:18})

12.创建索引

目的:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

# 创建索引前
db.test.find({name:'test9999'})
db.test.find({name:'test9999'}).explain('executionStats')  # 39ms
​
# 创建索引
db.test.ensureIndex({name:1})
# 创建索引后
db.test.find({name:'test9999'}).explain('executionStats')  # 7ms
​
# 删除索引
db.test.dropIndex({name:1})

默认情况_id是集合的索引

查看集合索引 db.集合名.getIndexes()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依恋、阳光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值