如何使用Golang mongo-driver在MongoDB中创建复合索引
复合索引创建说明与实现方案
CreateMany方法的设计逻辑就是遍历传入的列集合,为每一列单独生成单列索引,本身不支持生成多列复合索引,你需要调用对应开发框架下专门创建复合索引的API实现需求,以下是常见开发场景的实现示例:
Entity Framework Core 场景
在OnModelCreating方法中对目标实体配置多列索引即可,示例代码如下:
modelBuilder.Entity<目标实体类>() .HasIndex(e => new { e.第一列名, e.第二列名, e.第三列名 }); // 可在末尾链式调用IsUnique()等方法配置索引属性
如果需要批量生成多组复合索引,手动遍历你预设的复合索引列组合,调用HasIndex方法逐个生成即可,不要使用CreateMany方法。
MongoDB C# 驱动场景
直接使用CreateOne方法传入复合索引定义即可,示例代码如下:
var indexKeys = Builders<目标文档类>.IndexKeys .Ascending(d => d.第一列名) .Descending(d => d.第二列名); // 可按需调整列的排序方向和数量 await collection.Indexes.CreateOneAsync(new CreateIndexModel<目标文档类>(indexKeys));
复合索引的列顺序会直接影响索引的查询命中效率,通常建议把过滤频率高、区分度高的列放在索引的靠前位置。
内容的提问来源于stack exchange,提问作者Sarthak Jha
相关产品推荐
相关产品推荐

