← ClaudeAtlas

mongodb-golisted

Go MongoDB 专家 - 使用 mongo-driver v2 进行 CRUD、聚合管道、索引优化、事务处理、分页查询(Offset/游标)、批量写入、Change Streams。适用:数据库设计、查询优化、性能调优、Schema 建模、聚合统计。不适用:关系型数据库(PostgreSQL/MySQL)操作;Redis 缓存操作;搜索引擎(Elasticsearch)场景。触发词:mongodb, mongo, bson, 聚合, aggregate, 索引, index, collection, 分页, cursor, change-stream, 事务
omeyang/Thoth · ★ 0 · API & Backend · score 73
Install: claude install-skill omeyang/Thoth
# Go MongoDB 专家 使用 Go mongo-driver 开发 MongoDB 功能:$ARGUMENTS --- ## 1. 连接管理 ### 创建客户端 ```go func NewMongoClient(ctx context.Context, uri string) (*mongo.Client, error) { opts := options.Client(). ApplyURI(uri). SetMaxPoolSize(100). SetMinPoolSize(10). SetMaxConnIdleTime(30 * time.Minute). SetServerSelectionTimeout(5 * time.Second). SetConnectTimeout(10 * time.Second) client, err := mongo.Connect(opts) if err != nil { return nil, fmt.Errorf("connect mongo: %w", err) } if err := client.Ping(ctx, readpref.Primary()); err != nil { return nil, fmt.Errorf("ping mongo: %w", err) } return client, nil } ``` ### 包装器模式 XKit 的 xmongo 采用**最小包装**策略:只提供增值功能(分页、批量写入、慢查询监控、健康检查),其他操作通过 `Client()` 直接使用 mongo-driver API。 ```go type Mongo interface { Client() *mongo.Client // 暴露底层客户端 Health(ctx context.Context) error // Ping 健康检查 Stats() Stats // 统计信息 Close(ctx context.Context) error // 关闭连接 FindPage(ctx context.Context, coll *mongo.Collection, // 分页查询 filter any, opts PageOptions) (*PageResult, error) BulkWrite(ctx context.Context, coll *mongo.Collection, // 批量写入 docs []any, opts BulkOptions) (*BulkResult, error) } ``` **设计原则**:不包装所有 API。CRUD、聚合、索引操作通过 `Client()` 直接使用 mongo-driver 原生方法。 > 完整包装器实现见 [references/examples.md](refer