MongoDB入门详细教程

7 篇文章 1 订阅
6 篇文章 0 订阅

一、mongodb简介:

mongodb是基于分布式文件存储的数据库,它的特点是:高性能、可扩展、易部署、易使用,存储数据非常方便

二、下载安装
1.官网地址:
在这里插入图片描述
2.下载完成后,点击安装下载,自定义安装位置,一直点击下一步,直至安装完成。重启电脑。

三、启动配置

3.1 创建目录

在D盘要目录下新建一个mogo_data目录,里面再新建这四个目录文件夹:bin、log、conf、data

3.2 命令行下运行mongodb服务器

切换到安装目录下:执行下面命令:

D:\program files\MongoDB\Server\4.4\bin>mongod --dbpath D:\mongo_data\db

在这里插入图片描述
上述截图,代表启动成功。

3.3 连接mongodb

切换到安装目录下:执行下面命令:

D:\program files\MongoDB\Server\4.4\bin>mongo.exe

出现如下截图,代表连接成功。
在这里插入图片描述
截图中,可看出mongo shell版本号,连接的数据库信息。

3.4 配置mongodb服务

如上面2.1中,在conf文件夹中,创建一个名为mongod.cfg的文件
在这里插入图片描述
文件中配置如下:

systemLog:
destination: file
path: D:\mongo_data\log\mongod.log
storage:
dbPath: mongod.log\db

3.5安装mongodb服务

切换到安装目录下:执行下面命令:

mongod.exe --config "D:\mongo_data\conf\mongod.cfg" --install

执行结果如下:
在这里插入图片描述

3.6 启动mongodb(管理员运行方式)

运行命令:net start MongoDB
在这里插入图片描述

3.7 关闭mongodb服务

运行命令:net stop MongoDB

3.8 MongoDB 后台管理 Shell

cmd中执行命令:

mongo

在这里插入图片描述
可在shell中进行一些运算,如:
在这里插入图片描述

四、基本操作

一个mongodb中可以建立多个数据库。

MongoDB的默认数据库为"db",该数据库存储在data目录中。

4.1 基本语法

4.1.1 显示数据列表

show dbs

在这里插入图片描述
“local” 是你要链接的数据库。

数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串。

  • 不能是空字符串("")。
  • 不得含有’ '(空格)、.、$、/、\和\0 (空宇符)。
  • 应全部小写。
  • 最多64字节。

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
4.1.2 显示当前数据库对象或集合

db

在这里插入图片描述

4.2.3 使用数据库/集合

use 数据库名
use 集合名

在这里插入图片描述

五、mongodb实现增删改查:

1. 增:

A. 插入单条数据

db.集合名.insert(json数据)

如:在test2数据库中的NBA集合中插入数据(james,36)

use test2
db.NBA.insert{'james':36}

在这里插入图片描述
需要注意的是:如果数据库不存在,集合也不存在,使用上面命令后,则直接创建一个数据库,创建集合并插入数据。

查看是否安装成功

db.NBA.find()

在这里插入图片描述
如上图,我们并没有插入id,但是,它自动增加了全球唯一的id数据。

B. 插入多条数据:

db.NBA.insert([{'name':'irving','age':29},{'name':'harden','age':30},{'name':'zion','age':20}])

在这里插入图片描述
再次查询一下,是否真正的插入了数据
在这里插入图片描述
插入成功。

同时插入20条数据呢?我们不可能一条一条插入吧。我们可以使用for循环来实现,操作如下:

如:我们要插入:A1,A2…A20

for (var i=1;i<=20;i++){
... ... db.NBA.insert({'name':'A'+i,'age':i})}

如下图:
在这里插入图片描述
但是,看提示只插入了一条?我们不是插入20条数据吗?是不是操作不对?

C. 查询插入数据

我们查询看一下:
在这里插入图片描述
实际上,我们已经插入了全部数据,但是,它只显示最后一条数据的提示“1”。

2. 查

2.1 查询所有数据

db.NBA.find()

db.集合名.find(),查询所有的数据,上面已经提到过了。

在这里插入图片描述

2.2 按条件查询数据

需要注意的是:不管怎么查询,id列都会展示。

2.2.1 查询指定列数据
db.NBA.find({},{'name':1)

查看结果:
在这里插入图片描述
只查出来了name字段的数据,age数据未显示。

2.2.2 查询除了选中列剩余列的数据
db.NBA.find({},{'name':0})

查看效果,跟上面刚好相反:
在这里插入图片描述

2.3 查询年龄大于16岁的人的信息

那我们就得先了解一下mongodb的大于小于运算符:

  • $gt:大于
  • $lt:小于
  • $gte:大于或等于
  • $lte:小于或等于 $in:在什么区间
  • $nin:不在什么区间

查询大于16岁,开始:

db.NBA.find({age:{$gt:16}})

查看结果:
在这里插入图片描述

2.4 查询年龄等于20、30、36的人的数据
db.NBA.find({'age':{$in:[20,30,36]}})

结果如下:
在这里插入图片描述
另外:可以将数据显示成更加美观:

 db.NBA.find().pretty()

在这里插入图片描述

3. 改

语法:db.集合名.update(条件,新数据[是否新增,是否修改多条])

我们需要再了解一下修改相差参数:

  • $inc :传递
  • $rename :重命名列
  • $set :修改列值
  • $unset :删除列

3.1 修改数据库中名为zion更改为luca

db.NBA.update({name:'zion'},{$set:{name:'luca'}})

在这里插入图片描述
注意:修改的值必须加上引号,否则,会提示未定义:
查看结果:
在这里插入图片描述

3.2 将luca的年龄+1岁

db.NBA.update({name:'luca'},{$inc:{age:1}})

同样的,有加当然也有减。再来,由于手误,年龄改错了,再改回原来的:

db.NBA.update({name:'luca'},{$inc:{age:-1}})

在这里插入图片描述

3.3 综合复杂练习

A. 插入数据:name:steven,age:31,xb:男

db.NBA.insert({name:'steven',age:31,xb:'男'})

在这里插入图片描述
B. 修改name为:curry

db.NBA.update({name:'steven'},{$set:{name:'curry'}})

在这里插入图片描述
C. 将其年龄增加1岁

db.NBA.update({name:'curry'},{$inc:{age:1}})

在这里插入图片描述
D. 修改xb列为sex

db.NBA.update({name:'curry'},{$rename:{xb:'sex'}})

在这里插入图片描述
E. 删除性别数据

db.NBA.update({name:'curry'},{$unset:{'sex:'男'}})

在这里插入图片描述
F. 修改数据不存在,加参数true可插入数据

db.NBA.update({name:'book'},{$set:{age:25}},true)

true参数意义:无该条数据时,则插入。
在这里插入图片描述
G. 将多条数据,年龄都改成28岁

db.NBA.update({},{$set:{age:28}},false,true)

true代表全部

默认为flase不写
在这里插入图片描述

4. 删

语法:db.集合名.remove(条件,[是否删除一条])

true是,false否默认,删除第1条数据

db.NBA.remove({},true)

在这里插入图片描述
如果删除全部数据,则不加条件:

db.NBA.remove({})

工作中慎用。

5. 排序和筛选

语法:db.集合名.find().sort().skip(数字).limit(数字)

skip可选,1代表升序,-1代表降序

5.1 按年龄降序排列,只查询2两数据
首先定义表结构:
在这里插入图片描述
查询两条数据以倒序排列

db.CBA.find().sort({age:-1}).limit(2)

在这里插入图片描述

数据库的基本操作,暂时介绍到这里,下一期,将介绍用mongo实现接口开发简易接口,并测试。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值