我使用MongoDB C#驱动程序以编程方式创建了一个新的文档集合.

此时,我希望以编程方式创建和构建索引.我该怎么做?

推荐答案

从v2开始.0的驱动程序有一个新的async只API.旧的API不应该再被使用,因为它是新API之上的一个阻塞门面,已被弃用.

目前推荐的创建索引的方法是通过拨打CreateOneAsync并等待IndexKeysDefinition,然后使用Builders.IndexKeys:

static async Task CreateIndexAsync()
{
    var client = new MongoClient();
    var database = client.GetDatabase("HamsterSchool");
    var collection = database.GetCollection<Hamster>("Hamsters");
    var indexKeysDefinition = Builders<Hamster>.IndexKeys.Ascending(hamster => hamster.Name);
    await collection.Indexes.CreateOneAsync(new CreateIndexModel<Hamster>(indexKeysDefinition));
}

Mongodb相关问答推荐

Next js、MongoDB和Prisma.包括不为相关字段工作

构造函数的参数 0 需要错误类型的 bean

如何在 mongodb 中将一个方面的结果合并到一个有条件的列表中?

Golang:如何判断 collection.Find 是否没有找到任何文件?

连接到远程 mongo 服务器导致异常连接失败

MongoDB聚合多条件

用 BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId 在 C# 中装饰属性之间的区别

Mongoose 和新架构:返回ReferenceError: Schema is not defined

使用 brew upgrade Mongo update from 3.4 to 4.0 报错:在try 升级到 4.0 之前,数据文件需要完全升级到 3.6 版

MongoDB中超过2GB的数据库

MongoDB - 我如何找到另一个集合中的文档未引用的所有文档

如何使用node.js http服务器从mongodb返回大量行?

在 MongoDB 中合并两个集合

MongoException: Index with name: code already exists with different options

如何使用 MongoDB C# 驱动程序有条件地组合过滤器?

如何从 Mongoose 模型对象中获取集合名称

Mongoose:Model.create 和 Collection.insert 有什么区别

mongoose中的 Date.now() 和 Date.now 有什么区别?

是否可以使用聚合框架对 MongoDB 中的 2 个字段求和?

mongoose查询返回 null