MongoDB 环境搭建及使用详解

MongoDB 是一个基于分布式文件存储的数据库,使用的数据类型 BSON(类似 JSON)。

1、安装

1.1 window平台安装MongoDB

下载地址:https://www.mongodb.com/try/download/community

在这里插入图片描述

下载,并安装。

在这里插入图片描述

在Service Configuration界面,各配置说明如下

Install MongoD as a service :可以将MongoDB 安装为服务(安装为服务可以使用Windows服务来进行自启动,更加方便,只有选择安装为服务才可以进行下面的配置)。

  • Run service as Network Service user :以网络服务用户身份运行服务(默认),这是 Windows 内置的 Windows 用户帐户

  • Run Service as a local or domain user: 即以本地或域用户身份运行服务
    对于现有的本地用户帐户,为帐户域指定一个句点(即 .,上图即为该情况)并为用户指定帐户名称和帐户密码。
    对于现有域用户,指定该用户的帐户域、帐户名称和帐户密码。

  • Service Name 即服务名称。指定服务名称。默认名称是 MongoDB。如果您已有具有指定名称的服务,则必须选择其他名称。

  • Data Directory 即数据目录。指定数据目录,对应--dbpath。如果目录不存在,安装程序将创建目录并将目录访问权限设置给服务用户。

  • Log Directory 即日志目录。指定Log目录,对应--logpath。如果目录不存在,安装程序将创建目录并将目录访问权限设置给服务用户。

在这里插入图片描述

MongoDB Compass是一个图形界面管理工具,如果你已经有Navicat之类的客户端工具了,就不用安装了,如下

在这里插入图片描述

在这里插入图片描述


1.2 Linux系统中安装启动和连接

准备好安装包,如下

在这里插入图片描述

(1)解压缩

tar -xvf mongodb-linux-x86_64-rhel70-5.0.23.tgz

(2)移动解压后的文件夹到指定目录

mv mongodb-linux-x86_64-rhel70-5.0.23 /usr/local/mongodb

(3)新建存储数据和日志目录

# 数据存储目录
mkdir -p /mongodb/single/data/db
# 日志存储目录
mkdir -p /mongodb/single/log

(4)新建配置文件

vi /mongodb/single/mongod.conf

内容如下:

systemLog:
  # MongoDB发送所有日志输出的目标指定为文件
  destination: file
  # mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
  path: "/mongodb/single/log/mongod.log"
  # 当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
  logAppend: true
storage:
  # mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
  # The directory where the mongod instance stores its data.Default Value is "/data/db".
  dbPath: "/mongodb/single/data/db"
  journal:
    #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
    enabled: true
processManagement:
  #启用在后台运行mongos或mongod进程的守护进程模式。
  fork: true
net:
  # 服务实例绑定的IP,默认是localhost(192.168.157.140:局域网IP)
  bindIp: localhost,192.168.157.140
  # bindIp
  #绑定的端口,默认是27017
  port: 27017

(5)启动MongoDB服务

/usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf

在这里插入图片描述

注:如果启动后不是successfully,大概率是配置文件有问题。

通过进程查看是否启动

ps -ef | grep mongod

在这里插入图片描述

(6)防火墙设置

#开放端口27017
firewall-cmd --add-port=27017/tcp --permanent --zone=public
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

(7)停止关闭服务

方式一:粗暴简单

ps -ef | grep mongod
kill -2 xxx

方式二:通过mongo客户端的shutdownServer命令关闭

# 登录,如果远程,需认证
mongo --port 27017
# 切换到admin库
use admin
# 关闭服务
db.shutdownServer()

2、MongoDB连接

默认情况下,MongoDB的启动端口为27017。用Navicat连接如下所示

在这里插入图片描述

mongo命令连接如下

切换到bin目录下

./mongo --port 27017

在这里插入图片描述


3、MongoDB 概念

在mongodb中基本的概念是文档集合数据库,如下

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

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

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

MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

“show dbs” 命令可以显示所有数据的列表。

在这里插入图片描述

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

文档是一个键值(key-value)对(即BSON)。

{"no":"123", "name":"456"}
集合

集合就是 MongoDB 文档组,类似于关系型数据库中的表。

{"no":"123", "name":"张三"}
{"no":"456", "name":"李四"}
{"no":"789", "name":"王五"}
元数据

数据库的信息是存储在集合中。它们使用了系统的命名空间:

dbname.system.*

在MongoDB数据库中名字空间 <dbname>.system.* 是包含多种系统信息的特殊集合(Collection),如下:

集合命名空间描述
dbname.system.namespaces列出所有名字空间。
dbname.system.indexes列出所有索引。
dbname.system.profile包含数据库概要(profile)信息。
dbname.system.users列出所有可访问数据库的用户。
dbname.local.sources包含复制对端(slave)的服务器信息和状态。

4、常用语法

创建数据库

语法:

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

删除数据库

语法:

db.dropDatabase()

删除当前数据库,你可以使用 db 命令查看当前数据库名。

创建集合

语法:

db.createCollection("mycol")
查看创建的集合
show collections
删除集合

语法:

db.mycol.drop()
文档CRUD

所有存储在集合中的数据都是BSON格式

-- 集合mycol
-- 单个文档插入
db.mycol.insert(
{"name":"yyy","sex":"1"}
)

-- 多个文档插入
db.mycol.insertMany(
    [{"name":"333","sex":"1"},
    {"name":"222","sex":"1","age":30}]
)

-- 异常捕获(批量插入出现异常不会回滚,所以使用try catch捕获异常)
try{
    db.mycol.insertMany(
        [{"name":"333","sex":"1"},
        {"name":"222","sex":"1","age":30}]
    )
}catch(e){
 print(e)
}

-- 查询
db.mycol.find()
-- 查询某个
db.mycol.find({"name":"333"})
-- 只查询第一条
db.mycol.findOne({"name":"yyy"})
-- 投影查询(只查询某些字段,1不排除0排除)
db.mycol.find({"name":"yyy"},{name:1,_id:0})


更新文档

在这里插入图片描述

-- 覆盖修改,除了更新的字段其他都不见
db.mycol.update({_id:""},{sex:2})
-- 局部修改,利用修改器$set实现
db.mycol.update({_id:""},{$set:{sex:2}})
-- 批量修改(默认只修改第一条,加上参数multi即可)
db.mycol.update({name:"333"},{$set:{sex:"2"}},{multi:true})

删除文档

-- 全部删除,慎用
db.mycol.remove({})
-- 删除符合条件的
db.mycol.remove({name:"222"})

5、数据备份还原

备份数据库

# 语法
mongodump -h dbhost -d dbname -c cname -o dbdirectory
# 说明:
# dbhost:服务器地址
# dbname:数据库名字
# cname:集合名字,不用此参数导出整个库
# dbdirectory:备份数据存放目录

# 示例
./mongodump -h localhost:27017 -d d_test -o /data/bak

还原数据库

# 语法
mongorestore -h dbhost -d dbname -c cname dbdirectory
# 说明:
# dbhost:服务器地址
# dbname:数据库名字
# cname:集合名字
# dbdirectory:备份数据存放目录

# 示例
./mongorestore -h localhost:27017 -d d_test /data/bak/d_test
./mongorestore -h localhost:27017 -d EDU_ROBOT /data/bak/EDU_ROBOT

注:新版本已经没有mongodump和mongorestore命令,被进行了功能拆分,如需使用还需单独下载。

https://www.mongodb.com/try/download/database-tools

在这里插入图片描述

下载后同样进行解压,切换到bin目录即可

在这里插入图片描述

删除数据库,还原,如下

在这里插入图片描述

在这里插入图片描述



更多技术干货,请持续关注程序员大佬超。
原创不易,转载请注明出处。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员大佬超

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

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

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

打赏作者

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

抵扣说明:

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

余额充值