Pay*_*unt 40 .net c# indexing mongodb mongodb-.net-driver
我使用MongoDB C#驱动程序以编程方式创建了一个新的文档集合.
此时我想以编程方式创建和构建索引.我怎样才能做到这一点?
i3a*_*non 62
从驱动程序的v2.0开始,有一个新的async-inly API.不应再使用旧的API,因为它是新API的阻止外观,不推荐使用.
目前推荐的方法来创建一个索引是通过调用并等待CreateOneAsync与IndexKeysDefinition您通过使用得到Builders.IndexKeys:
static async Task CreateIndex()
{
var client = new MongoClient();
var database = client.GetDatabase("HamsterSchool");
var collection = database.GetCollection<Hamster>("Hamsters");
await collection.Indexes.CreateOneAsync(Builders<Hamster>.IndexKeys.Ascending(_ => _.Name));
}
Run Code Online (Sandbox Code Playgroud)
i3a*_*non 44
你应该使用CreateIndex的EnsureIndex是过时的标记与下一个版本未来的兼容性MongoDB:
var client = new MongoClient("mongodb://localhost");
var db = client.GetServer().GetDatabase("db");
var collection = db.GetCollection<Hamster>("Hamsters");
collection.CreateIndex(IndexKeys<Hamster>.Ascending(_ => _.Name));
Run Code Online (Sandbox Code Playgroud)
Der*_*ick 15
这样的事情应该做:
var server = MongoServer.Create("mongodb://localhost");
var db = server.GetDatabase("myapp");
var users = db.GetCollection<User>("users");
users.EnsureIndex(new IndexKeysBuilder().Ascending("EmailAddress"));
Run Code Online (Sandbox Code Playgroud)
请参阅文档中的以下位:
CreateOneAsync现在,消息“将CreateOneAsync与CreateIndexModel代替使用”将当前接受的答案中的重载标记为过时的。这是您的操作方式:
static async Task CreateIndex(string connectionString)
{
var client = new MongoClient(connectionString);
var database = client.GetDatabase("HamsterSchool");
var collection = database.GetCollection<Hamster>("Hamsters");
var indexOptions = new CreateIndexOptions();
var indexKeys = Builders<Hamster>.IndexKeys.Ascending(hamster => hamster.Name);
var indexModel = new CreateIndexModel<Hamster>(indexKeys, indexOptions);
await collection.Indexes.CreateOneAsync(indexModel);
}
Run Code Online (Sandbox Code Playgroud)
在定义和构建器文档页面下有一个关于索引的完整区域:
http://mongodb.github.io/mongo-csharp-driver/2.4/reference/driver/definitions/#index-keys
例子:
IndexKeysDefinition<MyModel> keys = "{ Reference: 1 }";
var indexModel = new CreateIndexModel<MyModel>(keys);
await _context.Indexes.CreateOneAsync(indexModel);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32791 次 |
| 最近记录: |