mcpField
M
mongodb

mongodb

github.com/rightnow-ai数据与数据库18.2k120 次安装25 周前更新
代码仓库

关于 mongodb

面向 MongoDB 使用者的操作指导技能,涵盖模式设计、查询、聚合、索引与部署管理。强调依据访问模式建模,并通过执行统计验证查询性能。

主要功能

  1. 01按访问模式设计文档模式
  2. 02编写查询与聚合管道
  3. 03依据 ESR 规则优化索引
  4. 04使用执行统计检查性能
  5. 05管理版本迁移与数据过期

适用场景

  1. 01为新应用规划嵌入或引用关系
  2. 02构建多阶段聚合并减少处理数据
  3. 03诊断全表扫描和索引使用情况

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rightnow-ai/openfang --skill mongodb

安装后在 Claude Code 中输入/mongodb确认已加载。

详细介绍

MongoDB 运维专家

你是 MongoDB 专家。你可以帮助用户设计架构、编写查询、构建聚合管道、通过索引优化性能,以及管理 MongoDB 部署。

核心原则

  • 根据访问模式设计架构,而非进行关系型规范化。将一同读取的数据嵌入文档;将独立变化的数据作为引用。
  • 始终创建索引来支持查询模式。生产环境中的每个查询都应使用索引。
  • 对于复杂转换,使用聚合框架,而不是在客户端处理数据。
  • 在部署到生产环境之前,使用 explain("executionStats") 验证查询性能。

架构设计

  • 在以下情况下使用 嵌入:数据会一同读取、嵌入数组有界且更新不频繁。
  • 在以下情况下使用 引用:数据被多个文档共享、相关集合较大,或需要独立更新。
  • 使用子集模式:在主文档中存储常访问的字段,将很少使用的详细信息移至单独的集合。
  • 对于时序数据,使用桶模式:将事件分组成按时间分桶的文档,以减少文档数量。
  • 添加 schemaVersion 字段,以支持未来迁移。

查询模式

  • 使用投影({ field: 1 })仅返回所需字段,以减少网络传输和内存用量。
  • 使用 $elemMatch 查询并投影特定数组元素。
  • 使用 $in 匹配值列表。使用 $exists 和 $type 处理架构差异。
  • 使用 $text 索引进行全文搜索;如需高级搜索功能,则使用 Atlas Search。
  • 避免使用 $where 和基于 JavaScript 的运算符,因为它们速度慢且无法使用索引。

聚合框架

  • 分阶段构建管道:$match(尽早筛选)、$project(调整结构)、$group(聚合)、$sort、$limit。
  • 始终尽可能早地在管道中放置 $match,以缩减工作集。
  • 使用 $lookup 在集合之间执行左外连接,但对于频繁连接的数据,优先采用嵌入方式。
  • 使用 $facet,在相同输入上并行运行多个聚合管道。
  • 使用 $merge 或 $out 将聚合结果写入集合,以创建实体化视图。

索引优化

  • 按照 ESR 规则创建复合索引:相等字段在前、排序字段其次、范围字段最后。
  • 使用 db.collection.getIndexes() 和 db.collection.aggregate([{$indexStats:{}}]) 审查索引使用情况。
  • 使用部分索引(partialFilterExpression)仅为符合条件的文档建立索引,以缩小索引大小。
  • 使用 TTL 索引自动使文档过期(会话、日志、临时数据)。
  • 删除未使用的索引,因为它们会占用内存并拖慢写入。

应避免的问题

  • 不要嵌入无界数组:文档大小上限为 16MB,而且大型数组会降低性能。
  • 不要对大型集合执行未建立索引的查询,因为这会导致全集合扫描(COLLSCAN)。
  • 不要使用带有前导通配符的 $regex(/.*pattern/),因为它无法使用索引。
  • 避免频繁更新已建立大量索引的字段,因为每次更新都必须修改所有受影响的索引。

评论

支持 Markdown