MongoDB 环境搭建及使用详解

news2024/11/15 20:08:13

文章目录

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

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目录即可

在这里插入图片描述

删除数据库,还原,如下

在这里插入图片描述

在这里插入图片描述



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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1391078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust 错误处理(上)

目录 1、用 panic! 处理不可恢复的错误 对应 panic 时的栈展开或终止 1.1 使用 panic! 的 backtrace 2、用 Result 处理可恢复的错误 2.1 匹配不同的错误 2.2 失败时 panic 的简写&#xff1a;unwrap 和 expect 2.3 传播错误 错误是软件中不可否认的事实&#xff0c;所…

Kafka详解及常见面试问题解析(值得珍藏)

1. 定义 Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。它是一种高吞吐量的分布式发布订阅消息系统&#xff0c;可以处理消费者在网站中的所有动作流数据。这种动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xff09;是在…

Visual Studio 2022 成功配置QT5.12.10

目录 下载并安装Visual Studio 2022 Qt5.12.10下载 Qt5.12.10安装 Qt VS Tools for Visual Studio 2022下载 Visual Studio 2022配置 测试 下载并安装Visual Studio 2022 下载社区版并安装&#xff0c;这个比较快。 Qt5.12.10下载 官网下载很慢&#xff0c;还不如百度网…

【加强版】小学数学出题,加减乘除混合运算,支持自定义数字,一键打印

在线预览&#xff1a;在线HTML代码预览和运行工具 - UU在线工具 复制下面代码后到该地址预览即可 注意&#xff1a;在线预览不能打印。如需打印&#xff0c;在电脑本地上新建文本文档&#xff0c;粘贴代码后保存&#xff0c;然后把文件后缀改为.html运行&#xff0c;出题点击…

不同打包工具下的环境变量配置方式对比

本文作者为 360 奇舞团前端开发工程师 天明 前言 在现代的JavaScript应用程序开发中&#xff0c;环境变量的配置是至关重要的。不同的应用场景和部署环境可能需要不同的配置&#xff0c;例如开发、测试和生产环境。最常见的需求是根据不同的环境&#xff0c;配置如是否开启sour…

如何编译openssl的早期版本的共享库,如openssl 1.0

背景介绍 最近在为客户排查问题的时候&#xff0c;发现客户提供的日志是加密的&#xff0c;解密工具依赖到了openssl 1.0的共享库。可是手头没有这么老版本的openssl共享库。因此只好手动编译一个出来。 编译步骤 因为openssl 1.0是比较老的版本&#xff0c;很多系统上的库已…

如何安装“MySQL在虚拟机ubuntu”win10系统?

1、 更新列表 sudo apt-get update 2、 安装MySQL服务器 sudo apt-get install mysql-server 3、 安装MySQL客户端 sudo apt-get install mysql-client 4、 配置MySQL sudo mysql_secure_installation 5、 测试MySQL systemctl status mysql.service MySQL数据库基本…

数学建模常见算法的通俗理解(更新中)

目录 1.层次分析法&#xff08;结合某些属性及个人倾向&#xff0c;做出某种决定&#xff09; 1.1 粗浅理解 1.2 算法过程 1.2.1 构造判断矩阵 1.2.2 计算权重向量 1.2.3 计算最大特征根 1.2.4 计算C.I.值 1.2.5 求解C.R.值 ​1.2.6 判断一致性 1.2.7 计算总得分 2 神…

武理多媒体信息共享平台的架构设计与实现

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

开发知识点-java基础

java基础知识整理 windows 多版本java jar包不能直接打开 需要java -jar问题解决 windows 多版本 控制面板 java15 download 多版本 https://www.cnblogs.com/chenmingjun/p/9941191.html https://gitee.com/shixinke/JC-jEnv/repository/archive/master.zip java jar包不…

Packet Tracer - Layer 2 VLAN Security

Packet Tracer - 第二层VLAN安全配置任务 目标 在SW-1和SW-2之间建立新的冗余链路。在新连接的SW-1和SW-2之间的干线链路上启用中继并配置安全措施。创建一个新的管理VLAN&#xff08;VLAN 20&#xff09;并将一台管理PC连接到该VLAN。实施ACL以防止外部用户访问管理VLAN。 背…

【全】OpenSSL创建生成CA证书、服务器、客户端证书及密钥说明

本文章对应的文档:使用OpenSSL创建生成CA证书服务器客户端证书及密钥资源-CSDN文库 https://download.csdn.net/download/weixin_41885845/88746920 对于SSL单向认证 服务器需要CA证书、server证书、server私钥,客户端需要CA证。 对于SSL双向认证 服务器需要CA证书、serv…

前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题

前言&#xff1a; 本是一个非常简单的请求&#xff0c;即是下载文件。通常的做法如下&#xff1a; 1.前端通过Vue Axios向后端请求&#xff0c;同时在请求中设置响应体为Blob格式。 2.后端相应前端的请求&#xff0c;同时返回Blob格式的文件给到前端&#xff08;如果没有步骤…

48 分布式id的生成策略

1.UUID 1.UUID (Universally Unique Identifier)&#xff0c;通用唯一识别码。UUID是基于当前时间、计数器&#xff08;counter&#xff09;和硬件标识&#xff08;通常为无线网卡的MAC地址&#xff09;等数据计算生成的。UUID由以下几部分的组合&#xff1a; 1.当前日期和时…

如何在内存中绘制透明位图

如何在内存中绘制透明位图 如何绘制透明位图&#xff1f;这类文章网上有很多&#xff0c;都是同一个套路&#xff0c;当然也包括我这篇&#xff01; 不同的是&#xff0c;我重新整理了代码&#xff0c;见“ysouyno/t_transparent_memory_dc”。同时附上完整的工程“t-transpa…

leetcode82. 删除排序链表中的重复元素 II

文章目录 题目思路1复杂度Code2 思路2复杂度2Code2 题目 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;…

已实现:JS如何根据视频的http(s)地址,来截取帧图片,并实现大图压缩的功能

现在&#xff0c;我们已经有了视频的http地址&#xff0c;我们怎么截取帧图片呢&#xff1f;我以Vue为基础架构&#xff0c;来写写代码。 1、先写布局&#xff0c;先得有video&#xff0c;然后得有canvas <video id"videoPlay" style"width: 100%; height:1…

23号资源——电力系统程序集合已提供下载资源

23号资源&#xff1a;程序集合包含9个程序&#xff08;经典电力系统经济调度程序&#xff1b;2解决带储&#xff1b;3智能微电网PSO优化算法&#xff1b;微电网调度等等&#xff0c;见资源描述&#xff09;资源-CSDN文库https://download.csdn.net/download/LIANG674027206/887…

VC++中使用OpenCV对原图像中的四边形区域做透视变换

VC中使用OpenCV对原图像中的四边形区域做透视变换 最近闲着跟着油管博主murtazahassan&#xff0c;学习了一下LEARN OPENCV C in 4 HOURS | Including 3x Projects | Computer Vision&#xff0c;对应的Github源代码地址为&#xff1a;Learn-OpenCV-cpp-in-4-Hours 视频里面讲…

【计算机网络】第七,八,九章摘要重点

第七章网络管理 1.计算机网络面临的两大威胁&#xff1f; 恶意程序有&#xff1a;计算机病毒&#xff0c;计算机蠕虫&#xff0c;特洛伊木马&#xff0c;逻辑炸弹&#xff0c;后门入侵和流氓软件。 2.安全的计算机网络四个目标&#xff1a; 机密性&#xff0c;端点鉴别&…