MongoDB 环境搭建及使用详解

约定不等于承诺〃 2024-02-05 23:37 126阅读 0赞

文章目录

      • 1、安装
        • 1.1 window平台安装MongoDB
        • 1.2 Linux系统中安装启动和连接
      • 2、MongoDB连接
      • 3、MongoDB 概念
        • 数据库(DATABASE)
        • 文档(Document)
        • 集合
        • 元数据
      • 4、常用语法
        • 创建数据库
        • 删除数据库
        • 创建集合
        • 查看创建的集合
        • 删除集合
        • 文档CRUD
      • 5、数据备份还原

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)解压缩

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

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

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

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

  1. # 数据存储目录
  2. mkdir -p /mongodb/single/data/db
  3. # 日志存储目录
  4. mkdir -p /mongodb/single/log

(4)新建配置文件

  1. vi /mongodb/single/mongod.conf

内容如下:

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

(5)启动MongoDB服务

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

在这里插入图片描述

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

通过进程查看是否启动

  1. ps -ef | grep mongod

在这里插入图片描述

(6)防火墙设置

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

(7)停止关闭服务

方式一:粗暴简单

  1. ps -ef | grep mongod
  2. kill -2 xxx

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

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

2、MongoDB连接

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

在这里插入图片描述

mongo命令连接如下

切换到bin目录下

  1. ./mongo --port 27017

在这里插入图片描述

3、MongoDB 概念

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














































SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键
数据库(DATABASE)

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

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

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

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

在这里插入图片描述

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

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

  1. {
  2. "no":"123", "name":"456"}
集合

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

  1. {
  2. "no":"123", "name":"张三"}
  3. {
  4. "no":"456", "name":"李四"}
  5. {
  6. "no":"789", "name":"王五"}
元数据

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

  1. dbname.system.*

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






























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

4、常用语法

创建数据库

语法:

  1. use DATABASE_NAME

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

删除数据库

语法:

  1. db.dropDatabase()

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

创建集合

语法:

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

语法:

  1. db.mycol.drop()
文档CRUD

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

  1. -- 集合mycol
  2. -- 单个文档插入
  3. db.mycol.insert(
  4. {
  5. "name":"yyy","sex":"1"}
  6. )
  7. -- 多个文档插入
  8. db.mycol.insertMany(
  9. [{
  10. "name":"333","sex":"1"},
  11. {
  12. "name":"222","sex":"1","age":30}]
  13. )
  14. -- 异常捕获(批量插入出现异常不会回滚,所以使用try catch捕获异常)
  15. try{
  16. db.mycol.insertMany(
  17. [{
  18. "name":"333","sex":"1"},
  19. {
  20. "name":"222","sex":"1","age":30}]
  21. )
  22. }catch(e){
  23. print(e)
  24. }
  25. -- 查询
  26. db.mycol.find()
  27. -- 查询某个
  28. db.mycol.find({
  29. "name":"333"})
  30. -- 只查询第一条
  31. db.mycol.findOne({
  32. "name":"yyy"})
  33. -- 投影查询(只查询某些字段,1不排除0排除)
  34. db.mycol.find({
  35. "name":"yyy"},{name:1,_id:0})

更新文档

在这里插入图片描述

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

删除文档

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

5、数据备份还原

备份数据库

  1. # 语法
  2. mongodump -h dbhost -d dbname -c cname -o dbdirectory
  3. # 说明:
  4. # dbhost:服务器地址
  5. # dbname:数据库名字
  6. # cname:集合名字,不用此参数导出整个库
  7. # dbdirectory:备份数据存放目录
  8. # 示例
  9. ./mongodump -h localhost:27017 -d d_test -o /data/bak

还原数据库

  1. # 语法
  2. mongorestore -h dbhost -d dbname -c cname dbdirectory
  3. # 说明:
  4. # dbhost:服务器地址
  5. # dbname:数据库名字
  6. # cname:集合名字
  7. # dbdirectory:备份数据存放目录
  8. # 示例
  9. ./mongorestore -h localhost:27017 -d d_test /data/bak/d_test
  10. ./mongorestore -h localhost:27017 -d EDU_ROBOT /data/bak/EDU_ROBOT

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

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

在这里插入图片描述

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

在这里插入图片描述

删除数据库,还原,如下

在这里插入图片描述

在这里插入图片描述


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

发表评论

表情:
评论列表 (有 0 条评论,126人围观)

还没有评论,来说两句吧...

相关阅读