MongoDB下载与基本使用(mac图文详解)

目录

一、下载安装

1.1 官网下载mongoDB

1.1.1 mongoDB

1.1.2 MongoDB GUI

1.2 下载流程

二、基本使用

2.1 创建数据库和集合

2.2 插入

2.3 查询

2.4 修改

2.5 删除

三、case

3.1 销售case

3.1.1 实操

3.1.2 全部指令汇总


背景:

个人练习用

一、下载安装

1.1 官网下载mongoDB

1.1.1 mongoDB

Download MongoDB Community Server | MongoDB

1.点进去什么好像可以自动给你选好,下载安装包的同学可以参考Mac 最新安装MongoDB数据库步骤+ 可视化软件MongoDB Compass - 简书

2.我电脑装好了brew,所以选择的终端执行指令下载,建议大家多看看指令安装过程中的提示,很详细

1.1.2 MongoDB GUI

可视化软件  ---> MongoDB Compass下载,下载链接

MongoDB Compass Download (GUI) | MongoDB

1.2 下载流程

1.下载

2.提示的很清晰,去网站创建账,然后把终端验证码贴到网页里,帮助你创建Atlas databas

3.终端提示的指令进行连接。连接成功

1.下载  MongoDB Compass 待更新

点击

二、基本使用

2.1 创建数据库和集合

1.指令:

-- 切换到要使用的数据库(如果不存在则会自动创建)
use yanhan_db
-- 创建集合
db.createCollection("test")

2.实操:

2.2 插入

1.指令:

-- 插入单个文档:
db.yanhan_db.insertOne({name:"john", age: 21})
-- 插入多个文档:(要用中括号包起来)
db.yanhan_db.insertMany([{name:"miky", age: 18}, {name:"king", age: 19}])

2.实操:

插入一条

插入多条

2.3 查询

1.指令

-- 查询所有文档:
db.yanhan_db.find()
-- 查询满足条件的文档:gt是greater than
db.yanhan_db.find({age:{$gt:18}})

2.实操:

查询所有

条件查询:查询 yanhan_db 数据库中年龄大于 18 岁的文档,符合条件的两个文档的详细信息。

2.4 修改

1.指令:

-- 更新单个文档:
db.yanhan_db.updateOne({name:"miky"},{$set:{age:100}})
-- 更新多个文档:lt小于,$set 更新
db.yanhan_db.updateMany({ age: { $lt: 35 } }, { $set: { status: "Active" } })

2.实操:

更新一个文档,

更新了 yanhan_db 数据库中年龄小于 35 岁的所有文档,将它们的 status 字段设置为 "Active"

2.5 删除

1.指令:

-- 删除单个文档,name值为'Sally'的记录:
db.yanhan_db.deleteOne({ name: "miky" })
-- 删除多个文档,status值为'Active'的记录:
db.yanhan_db.deleteMany({ status: "Active" })

2.实操:

三、case

3.1 销售case

3.1.1 实操

1.创建

2.插入数据

3.查询全部

4.聚合指令,计算每个客户的总销售额和订单数量

指令解释:

  1. $group

    • { $group: { _id: "$customer", ... } }:按照 customer 进行分组。
    • totalSales 字段: $multiply 计算每个订单的销售额,用"$quantity", "$unit_price"相乘,然后用 $sum 把计算好的结果相加。
    • totalOrders 字段:每当遇到一个订单就加一,使用 { $sum: 1 } 计算总订单数量。
  2. $sort

    • { $sort: { totalSales: -1 } }:按照 totalSales 字段进行降序排序,总销售额最高在前。-1降序,1升序

实操展示:

5.查找每种产品的平均销售价格和销售数量

指令解释:

  1. $group

    • _id: "$product":按照 product 字段的值进行分组,每个唯一的产品名称作为分组的依据。
    • avgPrice: { $avg: "$unit_price" }:计算每个产品的平均单价。
    • totalQuantity: { $sum: "$quantity" }:计算每个产品的总销售数量。
  2. $sort

    • 按照 _id 字段(产品名称)进行升序排序。

实操:

6.筛选特定日期范围内的销售订单并投影字段,从 sales 集合中选择指定日期范围内的订单数据,然后计算每个订单项的销售总额,并保留 order_idproductquantitytotalAmount 这些字段。

指令解释:

  1. $match 阶段

    • 使用 $match 阶段筛选 order_date 字段在 2024-06-01 到 2024-06-30 之间的订单。
  2. $project 阶段

    • 使用 $project 阶段重塑输出文档,保留 order_idproduct 和 quantity 字段,并计算新的字段 totalAmount
    • totalAmount:计算销售总额,和上面的一个查询相同。

其他:

  • 使用字段投影,通过指定字段名和值 1 或 0 控制输出文档中是否包含特定字段。
  • gte:表示 "greater than or equal",即大于或等于
  • lte:表示 "less than or equal",即小于或等于

实操

7.删除表

db.sales.drop()

3.1.2 全部指令汇总

-- 创建 sales
use sale
-- 创建 sales 集合并插入示例文档
db.sales.insertMany([{"order_id": 1001,"product": "Laptop","quantity": 2,"unit_price": 1200,"customer": "Alice","order_date": ISODate("2024-06-07T08:30:00Z")},{"order_id": 1002,"product": "Monitor","quantity": 1,"unit_price": 500,"customer": "Bob","order_date": ISODate("2024-06-10T10:15:00Z")},{"order_id": 1003,"product": "Keyboard","quantity": 3,"unit_price": 50,"customer": "Alice","order_date": ISODate("2024-06-15T14:45:00Z")},{"order_id": 1004,"product": "Mouse","quantity": 5,"unit_price": 20,"customer": "Charlie","order_date": ISODate("2024-07-09T09:30:00Z")}
])
-- 查询sales全部
db.sales.find()
-- 计算每个客户的总销售额和订单数量
db.sales.aggregate([{$group: {_id: "$customer", // 按客户分组totalSales: { $sum: { $multiply: ["$quantity", "$unit_price"] } }, // 计算总销售额,使用 $multiply 计算每个订单的销售额,然后用 $sum 计算每个客户的总销售额totalOrders: { $sum: 1 } // 计算总订单数量,每次遇到一个订单就加一}},{ $sort: { totalSales: -1 } } // 根据 totalSales 字段进行降序排序,显示总销售额最高的客户在前面
])
-- 查找每种产品的平均销售价格和销售数量
db.sales.aggregate([{$group: {_id: "$product",avgPrice: { $avg: "$unit_price" },totalQuantity: { $sum: "$quantity" }}},{ $sort: { _id: 1 } } // 按产品名称升序排序
])--筛选特定日期范围内的销售订单并投影字段
db.sales.aggregate([{$match: {order_date: {$gte: ISODate("2024-06-01"),$lte: ISODate("2024-06-30")}}},{$project: {order_id: 1,product: 1,quantity: 1,totalAmount: { $multiply: ["$quantity", "$unit_price"] }}}
])
-- 删除 sales 集合
db.sales.drop()

参考:MongoDB安装、基础操作和聚合实例介绍_MongoDB_脚本之家

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

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

相关文章

《计算机网络》(第8版)第九章 无线网络和移动网络 复习笔记

第九章 无线网络和移动网络 一、无线局域网 WLAN 1 无线局域网的组成 无线局域网提供移动接入的功能,可分为两大类:有固定基础设施的和无固定基础设 施的。 (1)IEEE 802.11 IEEE 802.11 是无线以太网的标准,是有固定…

MySQL安装教程(保姆级)

1. 首先要了解自己的计算机 打开设置——系统——系统信息 然后就可以知道自己计算机的类型了。 2. 下载MySQL 2.1. 来到MySQL官网 点击进入 我们下拉页面,可以找到DOWNLOADS 页面默认给咱们选择最新的版本,咱们不用,咱们尽量选一个稳定的版…

Linux的防火墙

一、防火墙概述 防火墙是一种计算机硬件和软件的结合,使internet和intranet之间建立一个安全网关(Security Gateway),从而保护内网免受非法用户侵入的技术。 防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。…

绝密!OceanBase OBCP备考模拟题讲解(2)

「源de爸讲数据库」每天更新OceanBase OBCP题库及全网独家超详细题目解析,祝您早日持证上岸! 现如今,一大批国产数据库随着国产化浪潮,已经逐步被越来越多的人认可。OceanBase便是其中一个优秀代表。 做这个日更专题,…

easy_Maze

结合题目,知道是一道迷宫题型 那么我们要做的就是 1.找到迷宫 2.确定方向(一般为wasd,但是可能会改) 3.确定起点 4.确定终点 // TAGS: dict_keys([spawn]) int __cdecl main(int argc, const char **argv, const char **envp) {__int64 v3; // raxint v5[49]; // [rsp0h]…

HCIA总结

一、情景再现:ISP网络为学校提供了DNS服务,所以,DNS服务器驻留在ISP网络内,而不再学校网络内。DHCP服务器运行在学校网络的路由器上 小明拿了一台电脑,通过网线,接入到校园网内部。其目的是为了访问谷歌网站…

【ROS 最简单教程 002/300】ROS 集成开发环境安装: Noetic

💗 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑,能帮忙解决的我会尽力 ! 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 如果已有 linux 环境 (如双系统等),可跳过步骤 1 ~ 👉 保姆级图文安装教程指路…

微服务事务管理(分布式事务问题 理论基础 初识Seata XA模式 AT模式 )

目录 一、分布式事务问题 1. 本地事务 2. 分布式事务 3. 演示分布式事务问题 二、理论基础 1. CAP定理 1.1 ⼀致性 1.2 可⽤性 1.3 分区容错 1.4 ⽭盾 2. BASE理论 3. 解决分布式事务的思路 三、初识Seata 1. Seata的架构 2. 部署TC服务 3. 微服务集成Se…

P3501 [POI2010] ANT-Antisymmetry 反对称 题解(字符串哈希+二分)

原题 题意 若一个由 01 01 01组成的字符串将 0 0 0和 1 1 1取反,并倒过来后与原字符串相同,则称为反对称字符串。现在给你一个长度为 n ( n ≤ 1 0 5 ) n(n \le 10^5) n(n≤105) 01 01 01组成的字符串,求它有多少个反对称子串。&#xff08…

Prometheus-部署

Prometheus-部署 Server端安装配置部署Node Exporters监控系统指标监控MySQL数据库监控nginx安装grafana Server端安装配置 1、上传安装包,并解压 cd /opt/ tar xf prometheus-2.30.3.linux-amd64.tar.gz mv prometheus-2.30.3.linux-amd64 /usr/local/prometheus…

npm install报错原因记录:npm ERR! code ENOENT

报错原因:路径打开错了,你需要在package.json这个文件的文件夹目录打开终端执行命令才行。 比如我的前端项目中,package.json项目在back-system-font-ts文件下,我就需要右击该文件,从该目录打开终端才有用

【前端】(仅思路)如何在前端实现一个fc手柄,将手机作为游戏手柄设备。

文章目录 背景界面demo遇到的问题最终后端demo(甚至比前端逻辑更简单) 背景 突发奇想,想要在前端实现一个fc游戏手柄,然后控制电脑的nes模拟器玩玩魂斗罗。 思路很简单,前后端使用websocket通信,connected标识socket链接已建立&a…

【Vulnhub系列】Vulnhub_Dr4g0n_b4ll 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub_Dr4g0n_b4ll靶场渗透 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、环境搭建 选择打开.ovf 文件 配置名称和路径 打开后调整网络连接模式为【NAT】即可 二、信息收集 1、主机…

RTC实时通信技术:GPT-4o急速响应背后的技术浅谈

RTC实时通信技术:GPT-4o急速响应背后的技术浅谈 RTC实时通信技术概述 RTC(Real Time Communication),即实时通信技术,是实时音视频通信的简称。其核心在于实现低延迟、高质量的音视频数据传输和处理,广泛…

2024华为数通HCIP-datacom最新题库(H12-831变题更新⑧)

请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 1、…

2024-7-28-CAJ转换器

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

敏捷产品经理实训:助力产品负责人掌握敏捷方法,提升产品开发效率

在当今快节奏的市场环境中,产品经理和产品负责人需要快速响应市场变化,推动产品创新,以满足用户不断变化的需求。敏捷产品经理实训课程专为产品经理和产品负责人设计,旨在帮助他们掌握敏捷方法,提高团队协作和产品开发…

16 CFR 1236婴儿睡眠产品出口美国认证标准CPC认证ASTM F3118测试

美国消费品安全委员会 (CPSC) 在联邦公报上发布了最终规则(86 FR 33022) 建立婴儿睡眠产品的强制性安全标准:婴儿睡眠产品安全标准(16 CFR part 1236), 该安全标准是参考了ASTM F3118-17a。16 CFR part 1236对 2022 年 6 月 23 日或之后生产的产品生效。…

哪些牌子充电宝性价比比较高?目前公认比较好用充电宝都在这儿!

在这个科技飞速发展的时代,充电宝已经成为我们生活中不可或缺的一部分。然而,在享受充电宝带来的便利时,我们不能忽视一个至关重要的问题——安全性。随着无线充电宝的普及,大家对于“无线充电宝哪个牌子更好?”的疑问…