monsqlize 1.0.8 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # 变更日志 (CHANGELOG)
2
2
 
3
3
  > **说明**: 版本概览摘要,详细变更见 [changelogs/](./changelogs/) 目录
4
- > **最后更新**: 2026-01-17
4
+ > **最后更新**: 2026-01-21
5
5
 
6
6
  ---
7
7
 
@@ -9,6 +9,8 @@
9
9
 
10
10
  | 版本 | 日期 | 变更摘要 | 详细 |
11
11
  |------|------|---------|------|
12
+ | [v1.1.0](./changelogs/v1.1.0.md) | 2026-01-21 | 🎉 重大更新:新增49个操作符,实现100% MongoDB操作符支持(122/122)| [查看](./changelogs/v1.1.0.md) |
13
+ | [v1.0.9](./changelogs/v1.0.9.md) | 2026-01-19 | 🎉 重大功能:统一表达式系统 - 67个操作符 + 107个测试 (100%通过) | [查看](./changelogs/v1.0.9.md) |
12
14
  | [v1.0.8](./changelogs/v1.0.8.md) | 2026-01-17 | 🎉 重大功能:多连接池 + Update 聚合管道 + Saga 事务 + Change Stream 同步 | [查看](./changelogs/v1.0.8.md) |
13
15
  | [v1.0.7](./changelogs/v1.0.7.md) | 2026-01-09 | 🔧 依赖更新:schema-dsl@1.1.3 修复类型错误消息 + 测试用例 Schema 语法修复 | [查看](./changelogs/v1.0.7.md) |
14
16
  | [v1.0.6](./changelogs/v1.0.6.md) | 2026-01-08 | 文档完善:新增 ObjectId 自动转换文档 + 验证所有 v1.3.0+ 功能文档 | [查看](./changelogs/v1.0.6.md) |
@@ -25,12 +27,36 @@
25
27
 
26
28
  | 版本系列 | 版本数 | 主要改进方向 |
27
29
  |---------|-------|------------|
28
- | v1.0.x | 9 | 企业级功能、分布式支持、Model 层完善、Schema 验证、依赖更新 |
30
+ | v1.0.x | 10 | 企业级功能、分布式支持、Model 层完善、Schema 验证、**统一表达式系统** 🆕 |
29
31
 
30
32
  ---
31
33
 
32
34
  ## 里程碑版本
33
35
 
36
+ ### v1.0.9 - 统一表达式系统 🎉
37
+
38
+ **发布日期**: 2026-01-19
39
+ **重要性**: ⭐⭐⭐⭐⭐
40
+
41
+ **核心功能**:
42
+ - ✅ **67个统一表达式操作符**: 完整实现阶段1 (43个) + 阶段2 (24个)
43
+ - ✅ **上下文感知编译**: 自动检测 $match/$project/$group 上下文
44
+ - ✅ **递归函数调用**: 支持任意深度的函数嵌套
45
+ - ✅ **Lambda表达式**: FILTER/MAP 完整支持
46
+ - ✅ **高性能缓存**: LRU缓存,>90%命中率
47
+ - ✅ **100%向后兼容**: 无破坏性变更
48
+
49
+ **测试覆盖**:
50
+ - 🏆 **测试数量**: 107个测试用例 (新增19个边界测试)
51
+ - 🏆 **通过率**: 100% (107/107通过)
52
+ - 🏆 **边界覆盖**: 95%+ 边界情况覆盖
53
+ - 🏆 **质量评级**: A+ (98.8%完成度)
54
+
55
+ **文档更新**:
56
+ - 📚 **聚合文档更新**: aggregate.md 新增统一表达式章节
57
+ - 📚 **完整实施报告**: 15+份详细报告
58
+ - 📚 **质量分析**: 全面质量检查和验证
59
+
34
60
  ### v1.0.8 - 企业级功能升级 🎉
35
61
 
36
62
  **发布日期**: 2026-01-16
package/README.md CHANGED
@@ -20,7 +20,7 @@
20
20
  npm install monsqlize
21
21
  ```
22
22
 
23
- [快速开始](#-快速开始) · [项目愿景](#-项目愿景) · [核心特性](#-核心特性) · [完整文档](./docs/INDEX.md)
23
+ [快速开始](#-快速开始) · [项目愿景](#-项目愿景) · [核心特性](#-核心特性) · [完整文档](./docs/INDEX.md) · [错误码参考](./docs/error-codes.md)
24
24
 
25
25
  </div>
26
26
 
@@ -34,6 +34,7 @@ npm install monsqlize
34
34
  - [🎯 何时使用 monSQLize?](#-何时使用-monsqlize)
35
35
  - [🚀 快速开始](#-快速开始)
36
36
  - [🌟 核心特性](#-核心特性)
37
+ - [0. 🎯 统一表达式系统 🆕](#0--统一表达式系统--v109---让聚合查询像sql一样简单)
37
38
  - [1. ⚡ 智能缓存系统](#1--智能缓存系统---性能提升-10100-倍)
38
39
  - [2. 🏢 企业级特性](#2--企业级特性)
39
40
  - [3. 📦 便利方法](#3--便利方法---减少-6080-代码)
@@ -464,6 +465,119 @@ const user = await users.findOne({ email: 'test@example.com' });
464
465
 
465
466
  ## 🌟 核心特性
466
467
 
468
+ ### 0. 🎯 统一表达式系统 🆕 v1.1.0 - 让聚合查询像SQL一样简单
469
+
470
+ **122个操作符(100% MongoDB支持!新增49个函数)**,让MongoDB聚合查询**像写SQL一样简单**!
471
+
472
+ <table>
473
+ <tr>
474
+ <td width="50%">
475
+
476
+ **🆕 统一表达式语法**
477
+
478
+ ```javascript
479
+ const { expr } = require('monsqlize');
480
+
481
+ // ❌ MongoDB原生(繁琐)
482
+ await users.aggregate([
483
+ {
484
+ $project: {
485
+ fullName: {
486
+ $concat: ['$firstName', ' ', '$lastName']
487
+ },
488
+ age: {
489
+ $subtract: [
490
+ { $year: new Date() },
491
+ { $year: '$birthDate' }
492
+ ]
493
+ }
494
+ }
495
+ }
496
+ ]);
497
+
498
+ // ✅ 统一表达式(简洁)
499
+ await users.aggregate([
500
+ {
501
+ $project: {
502
+ fullName: expr("CONCAT(firstName, ' ', lastName)"),
503
+ age: expr("YEAR(CURRENT_DATE) - YEAR(birthDate)")
504
+ }
505
+ }
506
+ ]);
507
+ ```
508
+
509
+ </td>
510
+ <td width="50%">
511
+
512
+ **核心优势**
513
+
514
+ - ✅ **67个操作符** - 覆盖95%使用场景
515
+ - ✅ **类SQL语法** - 易读易写,降低学习成本
516
+ - ✅ **上下文感知** - 自动适配$match/$project/$group
517
+ - ✅ **Lambda表达式** - FILTER/MAP完整支持
518
+ - ✅ **高性能** - LRU缓存,>90%命中率
519
+ - ✅ **100%兼容** - 可与原生语法混用
520
+
521
+ **支持的操作符分类**:
522
+ - 🔹 条件判断 (三元、SWITCH)
523
+ - 🔹 数学计算 (ABS、ROUND、POW等)
524
+ - 🔹 字符串处理 (CONCAT、SPLIT、REPLACE等)
525
+ - 🔹 数组操作 (FILTER、MAP、SIZE等)
526
+ - 🔹 日期处理 (YEAR、MONTH、DAY等)
527
+ - 🔹 类型转换 (TO_INT、TO_STRING等)
528
+
529
+ </td>
530
+ </tr>
531
+ </table>
532
+
533
+ **更多示例**:
534
+
535
+ ```javascript
536
+ // 条件判断 - 三元运算符
537
+ expr("score >= 90 ? 'A' : 'B'")
538
+
539
+ // 多分支条件 - SWITCH
540
+ expr("SWITCH(score >= 90, 'A', score >= 80, 'B', score >= 60, 'C', 'F')")
541
+
542
+ // 字符串处理
543
+ expr("UPPER(TRIM(email))")
544
+ expr("SPLIT(tags, ',')")
545
+
546
+ // 数组过滤(Lambda表达式)
547
+ expr("FILTER(items, item, item.price > 100)")
548
+
549
+ // 日期计算
550
+ expr("YEAR(createdAt) === 2024 && MONTH(createdAt) === 12")
551
+
552
+ // 完整聚合查询示例
553
+ await orders.aggregate([
554
+ {
555
+ $project: {
556
+ // 价格计算
557
+ finalPrice: expr("price * (1 - discount / 100)"),
558
+
559
+ // 日期提取
560
+ year: expr("YEAR(createdAt)"),
561
+ month: expr("MONTH(createdAt)"),
562
+
563
+ // 状态分类
564
+ statusLabel: expr("SWITCH(status === 'paid', 'Paid', status === 'pending', 'Pending', 'Cancelled')")
565
+ }
566
+ },
567
+ {
568
+ $group: {
569
+ _id: { year: '$year', month: '$month' },
570
+ totalOrders: expr("COUNT()"),
571
+ totalRevenue: expr("SUM(finalPrice)")
572
+ }
573
+ }
574
+ ]);
575
+ ```
576
+
577
+ 📖 **完整文档**:[统一表达式系统](./docs/aggregate.md#统一表达式系统) | [67个操作符列表](./docs/aggregate.md#支持的操作符-67个)
578
+
579
+ ---
580
+
467
581
  ### 1. ⚡ 智能缓存系统 - 性能提升 10~100 倍
468
582
 
469
583
  <table>