MongoDB 文档数据库 1 (安装、基础指令)

1、简介

MongoDB 是文档型数据库,内部引擎是js实现的。
MongoDB 官方英文文档:https://docs.mongodb.com/manual/
MongoDB 各平台下载地址:https://www.mongodb.com/download-center#community

和传统数据库比:
传统数据库:结构化数据,每行每列都相同
MongoDB文档数据库:采用json格式存储,比较灵活,每条数据可以有不同的数据。

mongodb可以轻松应对三高场景(高并发、高存储、高可用)

2、下载安装

mongodb是很占磁盘空间的,可能会占用3-4G

2.1、windows下安装

下载地址:https://www.mongodb.com/try/download/community
在这里插入图片描述
安装就是无脑下一步
需要注意的是默认勾选的下载图形化界面,把这个勾去掉,不然很慢
在这里插入图片描述
打开服务端
在这里插入图片描述
插入一条数据,再检索试试
在这里插入图片描述

2.2、linux下安装

这里以centos为例

安装相关依赖:

sudo yum install libcurl openssl

下载解压

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz  
tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz                               

将解压包拷贝到指定目录

mv mongodb-src-r4.2.8  /usr/local/mongodb4 

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

export PATH=<mongodb-install-directory>/bin:$PATH

<mongodb-install-directory> 为你 MongoDB 的安装路径。如本文的 /usr/local/mongodb4 。

export PATH=/usr/local/mongodb4/bin:$PATH

创建数据库目录、日志目录

sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
sudo chown `whoami` /var/lib/mongo     # 设置权限
sudo chown `whoami` /var/log/mongodb   # 设置权限

启动 Mongodb 服务

mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

打开 /var/log/mongodb/mongod.log 文件看到以下信息,说明启动成功。

# tail -10f /var/log/mongodb/mongod.log
2020-07-09T12:20:17.391+0800 I  NETWORK  [listener] Listening on /tmp/mongodb-27017.sock
2020-07-09T12:20:17.392+0800 I  NETWORK  [listener] Listening on 127.0.0.1

MongoDB 后台管理 Shell

$ cd /usr/local/mongodb4/bin
$ ./mongo
MongoDB shell version v4.2.8
connecting to: mongodb://127.0.0.1:27017/?co
...

可以用js语法进行操作:插入一条数据并检索试试

> db.runoob.insert({x:10})
WriteResult({ "nInserted" : 1 })
> db.runoob.find()
{ "_id" : ObjectId("5f069bdb4e02f8baf90f1184"), "x" : 10 }
> 

如果要停止 mongodb 可以使用以下命令:

mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --shutdown

mongodb是很占磁盘空间的,可能会占用3-4G,可以使用smallfiles选项来启动(400m左右)

3、程序功能解释

在这里插入图片描述

4、概念

在这里插入图片描述
一个mongodb中可以有多个库,一个库中有多个表。
表里面也有记录行、字段、索引、主键。

5、指令

mongodb的指令大小写是敏感的

5.1、数据库相关指令

查看有哪些库

show dbs

使用一个库test

use test

在mongodb中数据库的创建是隐式的
我们在use 一个库的时候,如果没有这个库,就会默认创建
(前提是必须在这个新库里面创建至少一个表)

use test1
db.createCollection("user");

删除当前使用的库

db.dropDatabase();
5.2、表相关指令

使用表相关的指令前,需要先use一个库

查看有哪些表(下面两个指令都可以)

show tables
show collections

创建一个表

db.createCollection("user");

插入一条数据(如下user是表名)

插入的数据,会默认给添加一个_id字段,作为主键

db.user.insert({name:zhangsan,age:25});

表的创建也是可以隐式创建的
比如下面我直接向不存在的表user1里面插入数据,user1就默认创建了

db.user1.insert({name:zhangsan,age:25});

可以插入时手动指定_id

db.user.insert({_id:1,name:lisi,age:40});

查找user表下的数据

db.user.find();

mongodb表里的内容就是json,满足json格式的都可以插进去
比如插一个数组

db.user.insert({_id:1,name:lisi,age:40,hobby:['1','2'],intro:{'title':'aa',content:'bb'}});

删除表user

db.user.drop();
5.3、数据相关指令

db.aaa.insert({_id:1,name:lisi,age:40});

增之前必须先use一个库,表名可以不用创建(会隐身创建)

增多个

db.aaa.insert([{_id:1,name:lisi},{_id:2,name:lisi1},{_id:3,name:lisi2}]);

删 (会删除所有匹配的)

db.aaa.remove({name:lisi})

删 (限定只删一条数据)

db.aaa.remove({name:lisi}, true)

删空整个表

db.aaa.remove()

改 (如下改会改整体,而不仅仅是改name)

db.aaa.update({name:'lisi'},{name:'lihua'})

改 (仅改指定字段: $set:{ })

db.aaa.update({name:'lisi'},{$set:{name:'lihua'}})

复杂改 (默认只改一行)
在这里插入图片描述

在这里插入图片描述
复杂改 (改多行,把multi设为true)
在这里插入图片描述
如果没有匹配值,插入一个新的行(设upsert:true)
在这里插入图片描述
如果没有匹配值,插入一个新的行,并添加新的字段值($setOnIsert:{ })
在这里插入图片描述

$setOnIsert 需要版本在2.4以上才支持

查所有列

db.stu.find()

查 (仅查前3条)

db.stu.find().limit(3)

查 (查所有文档的gender属性)
在这里插入图片描述
查 (查所有文档的gender属性,且不查询_id)
在这里插入图片描述
查 (查所有文档的gender属性等于male,只看name,不看_id)

在这里插入图片描述

5.4、批量插入try catch

在批量插入的时候,有可能出现中途失败的,就全部插入失败了,使用try catch可以避免这个问题

在这里插入图片描述

5.5、统计数量

统计记录的条数:

db.user.count()

统计记录的条数(条件是userid为100的):

db.user.count({userid:"100"})
5.6、排序

在这里插入图片描述

5.7、使用正则匹配查询

在这里插入图片描述
在这里插入图片描述

5.8、比较查询

在这里插入图片描述

5.9、常用指令总结

在这里插入图片描述

6、索引

6.1、索引的创建

查看索引

db.aaa.getIndexes()

在这里插入图片描述
增加索引

db.aaa.createIndex(userid:1)

1表示升序

复合索引
在这里插入图片描述
删除索引
在这里插入图片描述
根据名词删索引
在这里插入图片描述
删除所有索引
在这里插入图片描述

_id 是不会被删掉的

6.2、执行计划 explain( )

在这里插入图片描述
可以使用Compass工具查看

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值