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_脚本之家

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Rebecca.Yan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值