淘先锋技术网

首页 1 2 3 4 5 6 7

MongoDB的CRUD

本文主要是利用Robo3T可视化工具连接远程服务器MongoDB数据库来操作,模拟实际业务情况,没有远程的连接本地服务器均可。

1、客户端安装配置

下载工具类Robo3T,下载地址 https://robomongo.org/download

在这里插入图片描述

这里在弹窗中选择平台即可,因为我想在本地(win)连接远程服务器(CentOS)的MongoDB,所以这里我下载了Windows版本的Robo3T,本篇也主要是在win平台上操作,大家按需下载。

在这里插入图片描述

下载完得到一个zip,解压后得到两个exe

在这里插入图片描述

一个是studio-3t,一个是robo3t,两者都是MongoDB的图形管理工具,但是studio3是商业付费的,而robo3t是开源免费的,所以我们选择robo3t来进行安装。

双击打开robo3t,进入安装流程

在这里插入图片描述

下一步–我同意–选择安装路径

在这里插入图片描述

一路傻瓜式安装

在这里插入图片描述

直接运行

在这里插入图片描述

进入后继续同意

在这里插入图片描述

下一步直接finish即可

进入软件后我们选择弹窗里的creat

在这里插入图片描述

在弹窗里输入你的服务器地址,(连接本地的话默认localhost)

在这里插入图片描述

记住不管连哪里,请保证MongoDB已经启动连接远程的记得修改配置文件中bind_ip改为0.0.0.0,否则会报错,如果是阿里云的,记得安全组开一下,或者直接打开防火墙的27017端口。

修改完配置文件后记得重启MongoDB服务

在这里插入图片描述

我怕我说的不清楚,再演示一下,linux下的配置具体操作为:

1)修改配置文件mongodb.conf

vim ../mongodb.conf
#这里..是mongodb的安装路径,自己根据自己的来哈
#然后把bind_ip=127.0.0.1这行注释或者改为0.0.0.0

2)重启mongodb服务

../mongodb restart

2.1)开启27017端口(如果是阿里云则开安全组)

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT

都配置正常的话,就能看到这个绿绿的窗口啦

在这里插入图片描述

2、界面介绍

连接以后的界面

在这里插入图片描述

3、基础操作

创建数据库

use DATABASE_NAME

可以看到这里我们创建了一个新的数据库叫feng,但是show dbs时缺没有看到,是因为这个数据库里没有数据,所以不显示

在这里插入图片描述

添加数据

当我们插入一条数据后,在此查询就有信息了

在这里插入图片描述

我们可以利用刚才Robo3T里的js框写批量插入的脚本,比如这样

for(var i=0;i<10;i++){
    db.feng.insert({"name":"feng---"+i})
}

在这里插入图片描述

可以看到也成功插入了10条数据

在这里插入图片描述

查询数据

查询语句

db.feng.find()	//查询全部
db.feng.find({name:'feng'})		//指定查询
db.feng.fing({name:{$in:['feng','feng--1','feng--3']}})		//根据in后面的选择字段查询

在这里插入图片描述

在这里插入图片描述

条件查询

条件查询前我们先创建一个新的集合来查询

//创建
db.createCollection("drink")
//插入
db.drink.insertMany([
    {name:"可乐",price:3.5},
    {name:"雪碧",price:4.0},
    {name:"营养快线",price:5.5},
    {name:"脉动",price:6.0}
])



//查询price价格低于5块的
db.getCollection('drink').find({price:{$lt:5}})

在这里插入图片描述

当然了,这个语句在进入了mongodb服务的命令行也是一样操作的

在这里插入图片描述

模糊查询

//找name里含有"可"字的
db.getCollection('drink').find({"name":/可/})

在这里插入图片描述

修改操作

当然了,修改也是update,这和你之前学的数据库是没啥区别的,来看看具体语法

//先查询一条数据看看
>db.drink.find({name:"脉动"})
//查询返回的结果
{ "_id" : ObjectId("5f68482526e7f4925ac78b57"), "name" : "脉动", "price" : 6 }
//执行更新语句,有两个参数,第一个参数表示更新条件,这里是找到价格为6的,第二个参数就是更新的数据,我们更新为价格8块
> db.drink.update({price:6},{name:"脉动",price:8})
//匹配到一个,更改1
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
//再次查询发现已经更新了
> db.drink.find({name:"脉动"})
{ "_id" : ObjectId("5f68482526e7f4925ac78b57"), "name" : "脉动", "price" : 8 }
> 

在这里插入图片描述

删除数据

我们在插入一个可乐1用来删

//插一个数据
db.drink.insertOne({name:"可乐1",price:33.5})

在这里插入图片描述

删除语句主要用的remove,若不传参,则报错

在这里插入图片描述

传入删除条件,我们的可乐1就没咧

> db.drink.remove({name:"可乐1"})
WriteResult({ "nRemoved" : 1 })
> db.drink.find()
{ "_id" : ObjectId("5f68482526e7f4925ac78b54"), "name" : "可乐", "price" : 3.5 }
{ "_id" : ObjectId("5f68482526e7f4925ac78b55"), "name" : "雪碧", "price" : 4 }
{ "_id" : ObjectId("5f68482526e7f4925ac78b56"), "name" : "营养快线", "price" : 5.5 }
{ "_id" : ObjectId("5f68482526e7f4925ac78b57"), "name" : "脉动", "price" : 8 }
> 

在这里插入图片描述

其实Robo3T里也可以直接对着表信息操作

在这里插入图片描述

也是可以实现大部分操作

今天这篇主要是普普通通入个门,MongoDB将数据主要是以键值(key–>value)对来存储,他的文档类似于JSON,比如

{
    "_id":ObjectId("5f68482526e7f4925ac78b54")
    name:"feng",
    age:22,
    status:"A",
    groups:["game","sports"]
}

上面数据对应的表单如下

idnameagestatusgroupsgroups
1feng22A
gamesports

这些同样可以在Robo3T里看到哦

在这里插入图片描述

在这里插入图片描述

放一个MongoDB和我们传统SQL的字段区别对比

SQL术语、概念MongoDB术语、概念解释说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键