Mac环境下安装MongoDB数据库

news2024/12/27 11:18:40

一、下载安装

1.1 下载MongoDB

首先,从MongoDB官网下载自己想要使用的版本。
在这里插入图片描述
解压缩下载的压缩包重命名为mongodb,将mongodb文件夹复制到/usr/local目录下。
在这里插入图片描述

brew tap mongodb/brew
brew install mongodb-community@4.4

1.2 配置环境变量

打开.zshrc 文件,若没有此文件可以创建一个

open ~/.zshrc    //打开
touch .zshrc    //创建

把 MongoDB 的二进制命令文件目录(安装目录/bin)添加到 PATH 路径中

export PATH=${PATH}:/usr/local/mongodb/bin

编辑完成后保存并退出,然后使用source .zshrc命令使配置立即生效。

1.3 创建日志及数据目录

在 /usr/local/mongodb 目录下新建两个文件夹 data 和 log,用于存储 MongoDB 的数据和日志。

//新建data 和 log文件夹
sudo mkdir -p /usr/local/mongodb/data
sudo mkdir -p /usr/local/mongodb/log


//分配读写权限
sudo chown xzh /usr/local/mongodb/data
sudo chown xzh /usr/local/mongodb/log

其中,xzh为当前的用户名,您需要修改为您自己的系统用户名。接下来,我们需要配置系统环境变量。

1.4 启动MongoDB服务

完成配置后,使用下面的命令来启动 MongoDB 服务。

mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/log/mongo.log --fork

参数的说明如下:

  • –dbpath 用来设置数据的存放目录
  • –logpath 用来设置日志的存放目录
  • –fork 用来设置在后台运行

最后,我们使用mongod -version命令来验证 MongoDB 是否安装成功,如果出现类似下面所示的内容,则说明 MongoDB 安装成功。

db version v6.0.4
Build Info: {
    "version": "6.0.4",
    "gitVersion": "44ff59461c1353638a71e710f385a566bcd2f547",
    "modules": [],
    "allocator": "system",
    "environment": {
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

不过,每次开机都要输入一长串的命令启动 mongodb是十分麻烦的,我们可以使用配置文件的方式来启动。首先,在根目录下新建一个conf文件夹,并新建一个mongod.conf,配置内容如下:

# 数据库路径
dbpath=/usr/local/mongodb/data
# 日志输出文件路径
logpath=/usr/local/mongodb/log/mongo.log
# 错误日志采用追加模式
logappend=true
# 启用日志文件,默认启用
journal=true
# 过滤一些无用的日志信息,若需要调试设置为false
# quite=true
# 端口号 默认为27017
port=27017
# 是否需要校验,测试环境可以关闭,生产环境则需要打开
# auth=true
# 注册服务,这样就可以保证电脑启动服务就可以使用,避免每次关闭后还需要重新启动服务
fork=true

然后,使用配置好的文件进行启动。

mongod --config /usr/local/mongodb/conf/mongo.conf

注意,使用mongod --config启动时,后面跟的是mongo.conf文件的命令。启动成功之后,会输出如下的提示。

about to fork child process, waiting until server is ready for connections.
forked process: 3178
child process started successfully, parent exiting

接着,我们输入mongo命令就可以进入命令行中的编辑区,如下图。
在这里插入图片描述

二、可视化工具Studio 3T

通常,直接操作MongoDB体验并不是很友好,所以在实际使用过程中,我们需要安装一些可视化的操作工具,比如Studio 3T。首先,下载Studio 3T。
在这里插入图片描述
下载完后直接安装Studio 3T,然后打开并连接MongoDB数据库。
在这里插入图片描述
此次连接的是本地的MongoDB,所以Server填写localhost,端口默认为27017。
在这里插入图片描述
在这里插入图片描述

三、MongoDB常用语法

3.1 基本操作

SQL与MongoDB对比
image.png
数据库操作

  • 创建数据库:use demo
  • 查看数据库:show dbs
  • 删除数据库:db.dropDatabase()

集合(表)操作

  • 创建集合:db.createCollection(name)
  • 查看集合:show collections
  • 删除集合:db.collection.drop()

文档操作

  • 创建文档:db.collection.insertOne({})、db.collection.insertMany([])
  • 查看文档:db.collections.find({})
  • 删除文档:db.collection.deleteOne()、db.collection.deleteMany()
  • 更新文档:db.collection.update({},{},false,true)

3.2 使用示例

接着,我们使用上文提到的命令来简单的创建一个数据库,并对表中的数据进行CRUD操作。

查看数据库

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

创建数据库

> use demo
switched to db demo

创建集合

> db.createCollection("users")
{ "ok" : 1 }

查看集合

> show collections
users

创建空文档

> db.users.insertOne({})
{
    "acknowledged" : true,
    "insertedId" : ObjectId("62d917201c77c8032f399201")
}

创建文档并添加数据

> db.users.insertOne({userId: 1, userName:'Han Qiao', age: 30, score:300})
{
    "acknowledged" : true,
    "insertedId" : ObjectId("62d9173f1c77c8032f399202")
}

创建文档并添加多条数据

> db.users.insertMany([{userId: 2, userName:'Jack', age: 40, score:400},{userId: 3, userName:'Henry', age: 50, score:200}])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("62d917951c77c8032f399203"),
        ObjectId("62d917951c77c8032f399204")
    ]
}

查看文档

> db.users.find()
{ "_id" : ObjectId("62d917201c77c8032f399201") }
{ "_id" : ObjectId("62d9173f1c77c8032f399202"), "userId" : 1, "userName" : "Han Qiao", "age" : 30, "score" : 300 }
{ "_id" : ObjectId("62d917951c77c8032f399203"), "userId" : 2, "userName" : "Jack", "age" : 40, "score" : 400 }
{ "_id" : ObjectId("62d917951c77c8032f399204"), "userId" : 3, "userName" : "Henry", "age" : 50, "score" : 200 }

删除指定文档

> db.users.deleteOne({ "_id" : ObjectId("62d917201c77c8032f399201") })
{ "acknowledged" : true, "deletedCount" : 1 }
> db.users.find()
{ "_id" : ObjectId("62d9173f1c77c8032f399202"), "userId" : 1, "userName" : "Han Qiao", "age" : 30, "score" : 300 }
{ "_id" : ObjectId("62d917951c77c8032f399203"), "userId" : 2, "userName" : "Jack", "age" : 40, "score" : 400 }
{ "_id" : ObjectId("62d917951c77c8032f399204"), "userId" : 3, "userName" : "Henry", "age" : 50, "score" : 200 }

条件查找

> db.users.find({age:{$gt:35}})
{ "_id" : ObjectId("62d917951c77c8032f399203"), "userId" : 2, "userName" : "Jack", "age" : 40, "score" : 400 }
{ "_id" : ObjectId("62d917951c77c8032f399204"), "userId" : 3, "userName" : "Henry", "age" : 50, "score" : 200 }

更新文档,将age大于45的score更新为600

> db.users.update({age:{$gt:45}},{$set:{score:600}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.users.find()
{ "_id" : ObjectId("62d9173f1c77c8032f399202"), "userId" : 1, "userName" : "Han Qiao", "age" : 30, "score" : 300 }
{ "_id" : ObjectId("62d917951c77c8032f399203"), "userId" : 2, "userName" : "Jack", "age" : 40, "score" : 400 }
{ "_id" : ObjectId("62d917951c77c8032f399204"), "userId" : 3, "userName" : "Henry", "age" : 50, "score" : 600 }

当然,我们也可以打开Studio 3T,使用Studio 3T来对数据进行操作,如下图。
在这里插入图片描述

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

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

相关文章

python 获取chrome浏览器的安装目录,即chrome的绝对路径

实现目标需要使用到(引包|倒包) 2 个 python 模块, import win32api import win32con 引言(扉页): 也适用于查找安装在Windows中的应用程序的绝对路径, 譬如:微信(WeChat…

APP自动化(1)-Appium中adb常用命令

1.建立Appium与手机模拟器的连接环境 首先确定的是Appium已经打开和手机模拟器已经打开并且appium点击了开始的按钮,然后用cmd进去win的dos系统, 输入tasklist找到这个进程号,每台电脑都是不一样的进程号要按照你自己的来 查询pid地址netst…

Git 构建分布式版本控制系统

版本控制概念Gitlab部署1.版本控制概念 1.1分类 (一)1 本地版本控制系统(传统模式) (二)2 集中化的版本控制系统 CVS、Subversion(SVN) (三)3 分布式…

linux程序分析工具

嵌入式调试工具1. nm2. addr2line3. readelf3.1 ELF 文件分类3.2 ELF文件组成3.3使用1. nm nm源于name,是linux下一个文本分析工具,可以罗列指定文件中的符号(函数名、变量,以及符号类型)。 nm命令参数如下: 用法:nm …

深入理解MySQLⅢ -- 锁与InnoDB引擎

文章目录锁概述全局锁表级锁表锁元数据锁意向锁行级锁行锁间隙锁&临键锁InnoDB引擎逻辑存储结构架构内存结构磁盘结构后台线程事务原理redo logundo logMVCC锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源&#x…

Fiddler安装教程、工具图解

目录 一、Fiddler是什么? 二、Fiddler原理 三、Fiddler安装 Fiddler界面介绍 四、常用的工具图解 4.1会话列表 4.2状态栏 4.3内容显示区 一、Fiddler是什么? Fiddler是客户端与服务器之间的HTTP代理,是当前最常用的HTTP协议抓包工具。 …

谈谈 《 JavaScript - DOM编程艺术 》这本书

前言 好吧,现在已经2023年了,对于这本书(第二版)来说可能有点老了,这本书不是很难理解,但也不是很适合新手读,当然,这本书并不是百宝书 📕 ,它更注重于编程的…

格式化字符串你都懂了吗

文章目录前言一、什么是格式化字符串?二、使用 % 格式化字符串三、使用 format() 格式化字符串总结前言 今天跟大家聊聊字符串的格式化这部分内容。乍一听“格式化”这三个字,有的初学者可能会懵:难道这是要清空字符串的节奏? 其…

网络管理之设备上线技术的发展现状和趋势

网络和网络设备无处不在 随着社会的发展和技术的进步,人类文明开始向信息时代演进,网络逐渐变成现代社会不可或缺的一部分,极大程度影响了人类的认知形式、思维方式与生活模式。从家庭网,到企业网;从无线网&#xff0…

Mysql MHA搭建

. 目录 机器配置 安装Docker Docker安装和启动Mysql8.0.26 搭建Mysql一主二从 设置三台机器免密访问 安装MHA 搭建问题记录 问题1 MHA验证主从复制报错Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation 问题2 MHA验证…

doris - 数仓 拉链表 按天全量打宽表性能优化

数仓 拉链表 按天全量打宽性能优化现状描述优化现状描述 1、业务历史数据可以变更 2、拉链表按天打宽 3、拉链表模型分区字段设计不合理,通用的过滤字段没有作为分区分桶字段 4、拉链表表数据量略大、模型数据分区不合理和服务器资源限制,计算任务执行超…

安装JupyterLab失败的解决方案

由于本人电脑安装的Python版本3.6比较低,所以可能存在下面两种方法都安装失败,最后给出一个简单省事的方法。Jupyter lab比Jupyter Notebook要好用,试了之后感觉跟VSCode一样的存在,所以还是值得安装来代替Jupyter Notebook使用。…

Ae:解释素材

所谓解释素材 Interpret Footage,就是通过修改素材的某些属性(像素长宽比、帧速率、颜色配置文件及 Alpha 通道类型等),让它能更好地参与到合成中去。Ae菜单:文件/解释素材快捷键:Ctrl Alt G在项目面板里…

【C语言】编程初学者入门训练(13)

文章目录121. 小乐乐算最高分122. 小乐乐计算求和123. 小乐乐计算函数124. 小乐乐查找数字125. kiki学程序设计基础126. kiki算期末成绩127. kiki说祝福语128. kiki的最高分129. 求质数的个数130. kiki去重整数并排序121. 小乐乐算最高分 问题描述:小乐乐的老师BoB…

4.2 双点双向路由重发布

1. 实验目的 熟悉双点双向路由重发布的应用场景掌握双点双向路由重发布的配置方法2. 实验拓扑 双点双向路由重发布如图4-6所示: 图4-6:双点双向路由重发布 3. 实验步骤 IP地址的配置R1的配置 <Huawei>system-v…

关键路径、工期、总时差和自由时差精讲

关键路径法是在进度模型中&#xff0c;估算项目最短工期&#xff0c;确定逻辑网络路径进度灵活性大小的一种方法。①计算原理a.计算ES、EF&#xff1a;从网络计划起点节点开始&#xff0c;沿箭线方向依次向前推算&#xff0c;数值取大。b.计算LS、LF&#xff1a;从网络计划终点…

SVFormer:走进半监督动作识别的视觉 Transformer

出品人&#xff1a;Towhee 技术团队 顾梦佳 半监督学习&#xff08;SSL&#xff09;的动作识别是一个关键的视频理解任务&#xff0c;然而视频标注的高成本加大了该任务的难度。目前相关的方法主要研究了卷积神经网络&#xff0c;较少对于视觉 Transformers&#xff08;ViT&…

一个视频说清整个英语语法体系(重塑你的语法认知框架)

前言 绝大多数句子&#xff1a;什么 怎么样 几乎所有的英语句子&#xff1a;主语谓语 广义 “动作”&#xff1a;语法上的“动词” 主语(人或物) 谓语(“动作”发生了什么事情) 有哪些”动作“(动词)&#xff1f; 可以独立完成的动作&#xff1a;不及物动词 [主语不及物…

GEE学习笔记 七十九:【GEE之Python版教程十一】

列表在python中就是使用中括号包围的数据&#xff0c;比如[11,23,10]等。列表&#xff08;list&#xff09;是可变的&#xff0c;同时在python中还有集合&#xff08;set&#xff09;以及元组&#xff08;tuple&#xff09;和这个类似&#xff0c;不要把这些内容搞混。 运行下…

Maven怎样构建生命周期?

项目构建生命周期Maven的本质是一个项目管理工具&#xff0c;将项目开发和管理过程抽象成一个项目对象模型(POM)。Maven构建生命周期描述的是一次构建过程经历经历了多少个事件。对项目构建的生命周期划分为3套&#xff0c;其中clean负责清理工作&#xff0c;default负责核心工…