MongoDB C#ドライバーを使用して、プログラムで新しいドキュメントコレクションを作成しました。
この時点で、プログラムでインデックスを作成および構築します。どうやってやるの?
V2.0以降のドライバーには、新しいasync
- only APIがあります。古いAPIは、新しいAPIに対するブロックファサードであり、非推奨であるため、使用しないでください。
現在推奨されているインデックスの作成方法は、Builders.IndexKeys
を使用して取得するCreateOneAsync
でIndexKeysDefinition
を呼び出して待機することです。
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));
}
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));
このようなことを行う必要があります:
var server = MongoServer.Create("mongodb://localhost");
var db = server.GetDatabase("myapp");
var users = db.GetCollection<User>("users");
users.EnsureIndex(new IndexKeysBuilder().Ascending("EmailAddress"));
ドキュメントの次のビットを参照してください。
現在受け入れられている回答のCreateOneAsync
のオーバーロードは、「CreateIndexModelでCreateOneAsyncを代わりに使用してください」というメッセージで廃止されたとマークされています。方法は次のとおりです。
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);
}
Definitions and Buildersのドキュメントページの下に、インデックス作成に関する領域全体があります。
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);
c#でインデックスを作成する最も簡単な方法は、ドライバーラッパーライブラリ MongoDB.Entities を使用することです。テキストインデックスを作成する例を次に示します。
DB.Index<Author>()
.Key(a => a.Name, Type.Text)
.Key(a => a.Surname, Type.Text)
.Create();
全文検索を行うには、次のようにします。
DB.SearchText<Author>("search term");
それよりも簡単にするものは他にありません。