SuperAPI AI 工具集

mongodb

数据与分析

查看项目

更新于 10-16 04:46

技能介绍

用途

MongoDB 技能用于为 Sorcha 分布式账本配置 MongoDB 文档存储与查询操作。MongoDB 是 Sorcha 注册服务(Register Service)的文档存储,负责保存寄存器、交易、凭据(docket)和系统蓝图等数据。

存储架构

该代码库采用两层存储架构:

  • 热层(warm-tier):可变的 IDocumentStore<T>,支持完整 CRUD。
  • 冷层(cold-tier):不可变的 IWormStore<T>,用于 WORM/账本数据,不支持更新和删除。

主要能力

技能涵盖以下核心概念:

  • 过滤构建器(Filter Builders):类型安全查询,例如 Builders<T>.Filter.Eq(x => x.Id, id)。
  • 更新构建器(Update Builders):原子更新,例如 Builders<T>.Update.Set(x => x.Height, 10)。
  • 复合索引(Composite Indexes):多字段查询,例如 IndexKeys.Ascending(x => x.RegisterId).Ascending(x => x.TxId)。
  • WORM 存储:不可变账本数据,IWormStore<Transaction, string>,无更新/删除。
  • 文档存储:可变文档,IDocumentStore<Blueprint, string>,完整 CRUD。

使用方式

连接设置

在 Program.cs(注册服务)中配置 IMongoClient 单例,从配置读取连接字符串(默认 mongodb://localhost:27017),并获取数据库 sorcha_register。

仓储注册

使用 Sorcha.Storage.MongoDB 提供的扩展方法:

builder.Services.AddMongoClient(builder.Configuration);
builder.Services.AddMongoDatabase("sorcha_register");
builder.Services.AddMongoDocumentStore<Blueprint, string>(
    "blueprints",
    doc => doc.Id,
    doc => doc.Id
);

常见模式

带分页的过滤查询:使用 Builders<TransactionModel>.Filter.And 组合条件(如 RegisterId 相等、TimeStamp 大于等于),配合 SortByDescending、Skip、Limit 和 ToListAsync 执行。

数组元素查询:使用 Builders<TransactionModel>.Filter.AnyEq 查找 RecipientsWallets 数组中包含指定钱包地址的交易。

适用场景

适用于在 Sorcha 分布式账本中实现文档存储、查询集合等场景,包括寄存器、交易、凭据和系统蓝图的数据存取。

相关技能

dotnet(运行时与 C# 模式)、entity-framework(替代 ORM,PostgreSQL 使用 EF)、redis(缓存层集成)、docker(MongoDB 容器设置)、xunit(使用 Testcontainers 的集成测试)。

文档资源

可通过 Context7 获取最新的 MongoDB C# 驱动文档:使用 mcp__context7__resolve-library-id 搜索 "mongodb c# driver",再用 mcp__context7__query-docs 查询。库 ID 为 /mongodb/mongo-csharp-driver。推荐查询包括 "filter builder examples CRUD operations"、"BSON serialization attributes"、"index creation async"、"aggregation pipeline C#"。

限制

资料未提供该技能的收费、价格、平台支持范围及具体效果等信息。