|
19 | 19 | | 数据库类型 | SQLite | 🗺️ 计划中 | 未实现 | |
20 | 20 | | 数据库类型 | 查询运算符映射(operators) | 🗺️ 计划中 | 预研草案,尚未实现跨库翻译 | |
21 | 21 | | 数据模型/Schema | Schema 能力 | ❌ 未实现 | 由上层应用自行约束 | |
22 | | -| 读 API(Read) | findOne | ✅ 已实现 | 支持 projection、sort、cache、maxTimeMS | |
23 | | -| 读 API(Read) | find | ✅ 已实现 | 支持 limit/skip 普通分页;未传 limit 使用全局 findLimit(默认 10);limit=0 表示不限制 | |
24 | | -| 读 API(Read) | 深分页(游标/主键) | ❌ 未实现 | 计划中 | |
25 | | -| 读 API(Read) | 链表/聚合驱动分页 | ❌ 未实现 | 计划中 | |
26 | | -| 读 API(Read) | count | ✅ 已实现 | 统计匹配文档数 | |
27 | | -| 读 API(Read) | stream(find 流式返回) | ❌ 未实现 | 计划中 | |
28 | | -| 读 API(Read) | 聚合(aggregate/或 find 支持聚合) | ❌ 未实现 | 后续可能透传或翻译 | |
29 | 22 | | 缓存与失效 | 内置内存缓存 | ✅ 已实现 | 读穿、TTL(毫秒)、LRU、惰性过期、并发去重 | |
30 | 23 | | 缓存与失效 | 稳定序列化键 | ✅ 已实现 | 支持常见 BSON;keys()/delPattern();统计(enableStats 可选) | |
31 | 24 | | 缓存与失效 | 命名空间与精准失效 | ✅ 已实现 | collection.invalidate(op?);getNamespace() | |
|
42 | 35 | | 写相关辅助 | 写后读缓存一致性 | 手动 | 不自动失效,建议写后调用 collection.invalidate(op?) | |
43 | 36 | | 其他 | 安全默认 | ✅ 已实现 | find 未指定 limit 使用全局 findLimit;limit=0 表示不限制 | |
44 | 37 | | 其他 | 命名空间 instanceId | ✅ 已实现 | 可显式指定或自动生成;scope 支持 database/connection | |
| 38 | +| 读 API(Read) | findOne | ✅ 已实现 | 支持 projection、sort、cache、maxTimeMS | |
| 39 | +| 读 API(Read) | find | ✅ 已实现 | 支持 limit/skip 普通分页;未传 limit 使用全局 findLimit(默认 10);limit=0 表示不限制 | |
| 40 | +| 读 API(Read) | 深分页(游标/主键) | ❌ 未实现 | 计划中 | |
| 41 | +| 读 API(Read) | 链表/聚合驱动分页 | ❌ 未实现 | 计划中 | |
| 42 | +| 读 API(Read) | count | ✅ 已实现 | 统计匹配文档数 | |
| 43 | +| 读 API(Read) | stream(find 流式返回) | ❌ 未实现 | 计划中 | |
| 44 | +| 读 API(Read) | 聚合(aggregate/或 find 支持聚合) | ❌ 未实现 | 后续可能透传或翻译 | |
| 45 | +| 读 API(Read) | distinct | ❌ 未实现 | 仅 Mongo 适配器语义;尚未纳入抽象 | |
| 46 | +| 读 API(Read) | explain | ❌ 未实现 | 诊断用途;建议透传且禁用缓存(规划中) | |
| 47 | +| 读 API(Read) | countDocuments / estimatedDocumentCount | ❌ 未实现 | 目前仅对外提供 count 抽象;计划拆分补充 | |
| 48 | +| 读 API(Read) | 高级查询/游标选项统一抽象 | ❌ 未实现 | batchSize/hint/collation/noCursorTimeout/tailable/max/min/returnKey/allowPartialResults/readPreference/readConcern | |
| 49 | +| 读 API(Read) | showRecordId | ❌ 未实现 | Mongo 专属选项 | |
| 50 | +| 读 API(Read) | comment / let | ❌ 未实现 | let 多见于聚合;待评估透传策略 | |
| 51 | +| 读 API(Read) | readPreferenceTags | ❌ 未实现 | 读偏好标签,仅 Mongo 适配器相关 | |
| 52 | +| MongoDB 方法(Writes) | insertOne / insertMany | ❌ 未实现 | 写路径当前不在范围内;不提供自动失效 | |
| 53 | +| MongoDB 方法(Writes) | updateOne / updateMany | ❌ 未实现 | 同上 | |
| 54 | +| MongoDB 方法(Writes) | replaceOne | ❌ 未实现 | 同上 | |
| 55 | +| MongoDB 方法(Writes) | deleteOne / deleteMany | ❌ 未实现 | 同上 | |
| 56 | +| MongoDB 方法(Writes) | bulkWrite | ❌ 未实现 | 同上 | |
| 57 | +| MongoDB 方法(Writes) | findOneAndUpdate / findOneAndReplace / findOneAndDelete | ❌ 未实现 | findAndModify 系列 | |
| 58 | +| MongoDB 方法(Indexes) | createIndex / createIndexes | ❌ 未实现 | 索引管理未纳入抽象 | |
| 59 | +| MongoDB 方法(Indexes) | dropIndex / dropIndexes | ❌ 未实现 | 同上 | |
| 60 | +| MongoDB 方法(Indexes) | listIndexes | ❌ 未实现 | 同上 | |
| 61 | +| MongoDB 方法(Indexes) | 索引选项统一抽象 | ❌ 未实现 | unique/sparse/TTL/partialFilterExpression/collation 等 | |
| 62 | +| MongoDB 方法(Indexes) | hidden/wildcard/columnstore | ❌ 未实现 | 待评估,版本相关 | |
| 63 | +| MongoDB 方法(Transactions & Sessions) | startSession/withTransaction/commit/abort | ❌ 未实现 | 会话与事务未纳入抽象 | |
| 64 | +| MongoDB 方法(Transactions & Sessions) | readConcern / readPreference / causalConsistency | ❌ 未实现 | 与会话绑定的读选项 | |
| 65 | +| MongoDB 方法(Change Streams) | watch | ❌ 未实现 | 集合/数据库/集群级变更流 | |
| 66 | +| MongoDB 方法(Admin/DB/Collection) | listCollections / listDatabases | ❌ 未实现 | 管理类接口未纳入抽象 | |
| 67 | +| MongoDB 方法(Admin/DB/Collection) | dropDatabase | ❌ 未实现 | 同上 | |
| 68 | +| MongoDB 方法(Admin/DB/Collection) | db.stats() / coll.stats() | ❌ 未实现 | 同上 | |
| 69 | +| MongoDB 方法(Admin/DB/Collection) | runCommand | ❌ 未实现 | 通用命令透传(待策略) | |
| 70 | +| MongoDB 方法(Admin/DB/Collection) | serverStatus / ping / buildInfo | ❌ 未实现 | 同上 | |
| 71 | +| MongoDB 方法(Admin/DB/Collection) | profilingLevel / setProfilingLevel | ❌ 未实现 | 同上 | |
| 72 | +| MongoDB 方法(Admin/DB/Collection) | 用户与角色管理 | ❌ 未实现 | createUser/grantRoles/revokeRoles/dropUser 等 | |
| 73 | +| MongoDB 方法(Admin/DB/Collection) | renameCollection / collMod / convertToCapped | ❌ 未实现 | 同上 | |
| 74 | +| MongoDB 方法(Admin/DB/Collection) | validator / validationLevel / validationAction | ❌ 未实现 | 统一抽象未实现 | |
| 75 | +| MongoDB 方法(Cursors & Pagination) | 深分页(游标/主键锚点) | ❌ 未实现 | 见上方“读 API”;计划中 | |
| 76 | +| MongoDB 方法(Cursors & Pagination) | 流式消费(cursor/async iterator) | ❌ 未实现 | 计划中;find 的 stream 形态 | |
| 77 | +| MongoDB 方法(Cursors & Pagination) | 其他光标细节统一抽象 | ❌ 未实现 | batchSize/noCursorTimeout/tailable/maxAwaitTimeMS/exhaust/hint | |
| 78 | +| MongoDB 方法(Operators/Projection/Sort) | 跨库运算符映射层 | 🗺️ 计划中 | operators registry;复杂阶段如 $lookup/$facet/$graphLookup 未覆盖 | |
| 79 | +| MongoDB 方法(GridFS) | GridFSBucket 及 API | ❌ 未实现 | openUploadStream/openDownloadStream 等 | |
| 80 | +| MongoDB 方法(Options) | collation / readPreference / readConcern / writeConcern | ❌ 未实现 | 统一抽象未纳入 | |
| 81 | +| MongoDB 方法(Options) | explain / allowDiskUse / let / comment | ❌ 未实现 | 其中 allowDiskUse 多见于聚合;透传策略待定 | |
| 82 | +| MongoDB 方法(Options) | 时间序列/特殊集合能力封装 | ❌ 未实现 | 如 TTL index 管理等 | |
| 83 | +| MongoDB 方法(Driver-level) | apiVersion / 传输与压缩参数 | ❌ 未实现 | 驱动层能力;不在通用抽象范围 | |
| 84 | +| MongoDB 方法(Change Streams) | 关键选项(fullDocument/fullDocumentBeforeChange/resumeAfter/startAfter/startAtOperationTime) | ❌ 未实现 | 仅 Mongo;跨库缺失;通常禁用缓存 | |
| 85 | +| MongoDB 方法(Aggregation) | $out / $merge | ❌ 未实现 | 写路径;短期不纳入通用抽象;透传需禁缓存 | |
| 86 | +| MongoDB 方法(Operators) | 文本/正则/地理运算符覆盖声明($text/$regex/$geoWithin/$near 等) | 🗺️ 计划中 | Mongo-only 透传策略待定;跨库取决于 operators registry | |
| 87 | +| MongoDB 方法(GridFS) | 选项(chunkSizeBytes/disableMD5) | ❌ 未实现 | 仅在引入 GridFS 时细化 | |
| 88 | +| MongoDB 方法(Admin/DB/Collection) | time-series/clustered/capped 集合支持态度 | ❌ 未实现 | 暂不纳入通用抽象;仅在 Mongo createCollection/collMod 透传 | |
| 89 | + |
| 90 | +## MongoDB 方法覆盖现状(已合并至能力矩阵) |
| 91 | +> 说明:MongoDB 方法覆盖情况已并入上方“能力矩阵”主表(分类以“MongoDB 方法(…)”开头)。后续更新请直接维护表格行,避免与该段落重复。 |
45 | 92 |
|
46 | 93 | ## 里程碑(示例) |
47 | 94 | - [Unreleased] |
|
52 | 99 | ## Not Goals(短期非目标) |
53 | 100 | - 提供写 API 的自动失效(由调用方手动失效或在业务层封装)。 |
54 | 101 |
|
| 102 | +## 能力缺口与优先级(建议) |
| 103 | +- P0(直接提升可用性/生态兼容) |
| 104 | + - 深分页(游标/主键) |
| 105 | + - 多层缓存(本地+远端) |
| 106 | + - 健康检查/事件钩子 |
| 107 | +- P1(扩展能力面) |
| 108 | + - stream(find 流式返回) |
| 109 | + - 聚合(aggregate/透传) |
| 110 | + - 查询运算符映射层(operators) |
| 111 | +- P2(生态/打包与多数据库) |
| 112 | + - 模块格式:ESM 条件导出 |
| 113 | + - PostgreSQL/MySQL/SQLite 适配器(从只读最小集起步) |
| 114 | +- Not Goals(短期不做) |
| 115 | + - 写路径自动失效(保持由业务手动失效或上层封装) |
| 116 | + |
| 117 | +## 设计与实现要点(提纲) |
| 118 | +- 深分页 |
| 119 | + - 提供“游标/主键锚点 + 方向”(after/before + limit + sort),默认使用主键升序。 |
| 120 | + - 禁止与不稳定排序字段混用;缓存键需包含锚点与方向信息。 |
| 121 | +- 多层缓存 |
| 122 | + - 在现有 CacheLike 基础上组合 local + remote,TTL 毫秒单位保持一致;远端失败优雅降级。 |
| 123 | + - inflight 去重在本地层生效;失效复用命名空间键形状。 |
| 124 | +- stream(find 流式) |
| 125 | + - 默认禁用缓存;与 maxTimeMS/slowQueryMs 联动,分段观测耗时。 |
| 126 | +- 聚合(aggregate) |
| 127 | + - 阶段性:对 Mongo 先透传,跨库依赖 operators 映射,逐步覆盖 match/project/sort/limit。 |
| 128 | +- 事件钩子/健康检查 |
| 129 | + - on('connected'|'closed'|'error'|'slow-query');slow-query 输出“查询形状”与耗时阈值。 |
| 130 | + - health() 返回连接状态、默认值视图、缓存层摘要(命中率/size,可选)。 |
| 131 | +- 模块格式(ESM 条件导出) |
| 132 | + - package.json exports { require, import, types },不破坏 CJS 现有入口。 |
| 133 | +- 运算符映射层 |
| 134 | + - 先覆盖 =, !=, >, >=, <, <=, in, nin, and, or, not 及基本排序/投影;以适配器声明自身支持矩阵。 |
| 135 | + |
| 136 | +## 测试与质量建议(重点覆盖) |
| 137 | +- 深分页:首页/末页/方向切换、稳定排序校验、游标重复/过期。 |
| 138 | +- 多层缓存:本地/远端命中与降级、命名空间失效、异常/超时后的 inflight 清理。 |
| 139 | +- stream:背压与 maxTimeMS、缓存禁用验证、慢日志不泄露敏感值。 |
| 140 | +- 聚合:Mongo 透传用例;跨库未实现时的明确错误/能力告知。 |
| 141 | +- 事件钩子/health:事件触发顺序、异常路径、健康视图字段。 |
| 142 | +- CI 建议:继续覆盖 Windows + Ubuntu;库类项目增加包体检查(npm pack)。 |
| 143 | + |
| 144 | +## 下一步(可执行清单) |
| 145 | +1) 设计与评审:深分页 API 草案 + 缓存分层接口草案。 |
| 146 | +2) 补充里程碑细化:将 P0/P1 拆解到 [Unreleased] 并标注依赖。 |
| 147 | +3) 实现与测试:优先落地深分页最小集 + 多层缓存骨架(远端可先 mock)。 |
| 148 | +4) 文档:README 增加新能力示例;CHANGELOG 记录 Added/Changed。 |
| 149 | + |
| 150 | +> 更新时间:2025-08-25 16:55 |
| 151 | +
|
55 | 152 | ## 关联 |
56 | 153 | - 历史变更:见 ./CHANGELOG.md |
57 | 154 | - 入门与示例:见 ./README.md |
0 commit comments