hn-hlw-service/mongosh/count-by-duration.md
2026-07-27 11:28:33 +08:00

54 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

##### 应用场景
9.3-9.30开方时长0-30秒的医生名字及他们开的处方数(以此为例)
##### 说明
后期可自行修改下面代码中查询条件($match)来实现需求
##### 方案 mongosh
##### 代码
###### 01. 切换到目标数据库
```
use Internet-hospital;
```
###### 02. 执行聚合查询
```
db["hlw-doctor-times"].aggregate([
// 1. 过滤条件:筛选指定时间范围和 符合rxDuration 的文档
{
$match: {
createTime: {
// 转换为毫秒时间戳UTC 时间 2025-09-03 00:00:00
$gte: new Date("2025-09-03").getTime(),
// 转换为毫秒时间戳UTC 时间 2025-10-01 00:00:00覆盖到 9-30 最后一刻)
$lt: new Date("2025-10-01").getTime()
},
rxDuration: { $lte: 30000 } // rxDuration 小于等于 30000
}
},
// 2. 分组统计:按 doctorCode 分组,计算每个医生的符合条件文档数
{
$group: {
_id: "$doctorCode", // 分组键doctorCode
doctorName: { $first: "$doctorName" }, // 取同组第一个医生姓名(确保唯一)
count: { $sum: 1 } // 统计每组文档数
}
},
// 3. 格式化输出:调整字段结构,符合需求格式 { doctorCode, doctorName, count }
{
$project: {
_id: 0, // 隐藏默认的 _id 字段
doctorCode: "$_id", // 将分组键 _id 转为 doctorCode
doctorName: 1, // 保留医生姓名
count: 1 // 保留统计数量
}
}
]).toArray();
```