2013-07-23 21 views
32

MongoDB C#ドライバを使用してプログラムで新しいドキュメントコレクションを作成しました。MongoDBで.NETを使用してインデックスを作成する方法

この時点では、プログラムでインデックスを作成して作成したいと考えています。どうやってやるの?

このような何かを行う必要があります
+2

インデックスを作成するには、現在推奨される方法は、呼び出しとBuilders.IndexKeysを使用して、あなたが得るIndexKeysDefinitionCreateOneAsyncを待っていることです。 org/csharp/current/html/e5bf7883-8321-89e4-3993-8069a61fa8b8.htm)。 'MongoCollection.EnsureIndexメソッド 'があります。 – Schaliasos

+0

[C#でMongoDBユニークキーを作成する](http://stackoverflow.com/questions/6218966/creating-mongodb-unique-key-with-c-sharp) – WiredPrairie

答えて

49

ドライバのv2.0から、新しいasync-only APIがあります。古いAPIは、新しいAPIを覆うファサードとして使用されなくなり、非推奨になります。 //api.mongodb:あなたは[documantion](HTTPを参照することができます

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)); 
} 
+3

これは最新の回答です。 –

+2

ピーナッツギャラリーの簡単な質問私は、C#の魔法の弦よりも強く型付けされたラムダの大ファンですが、ハムスターのオブジェクトにアドレスの配列(請求、物理、郵送など)があると仮定し、郵便番号によるインデックス残念なことに、Builders .IndexKeys.Ascending(_ => _.Addresses.First()。ZipCode)を押すと、あたかも郵便番号がルートクラスのハムスターにあるかのようにインデックスが作成されます。 docs.mongodb.comのドキュメントは、まあまあです。 – Buvy

14

var server = MongoServer.Create("mongodb://localhost"); 
var db = server.GetDatabase("myapp"); 

var users = db.GetCollection<User>("users"); 

users.EnsureIndex(new IndexKeysBuilder().Ascending("EmailAddress")); 

ドキュメントの以下のビットを参照してください。

+0

良いこれは完璧です – Payedimaunt

+9

廃止、I3arnonの回答を参照してください – meffect

43

EnsureIndexが、将来のために廃止されたマークされているとして、あなたがCreateIndexを使用する必要がありますMongoDBの次のバージョンとの互換性:

+1

@PhilBarresi既存のものを削除して新しいものを作成することを意味しますか?あるいは、別のインデックスを作成するだけですか? どちらも起こりません。 – i3arnon

+9

明らかに私は間違っていた。インデックスを作成するコマンドを送信しますが、インデックスがすでに作成されている場合は、結果としてノーオペレーションになります。私の誤解は、フォアグラウンドインデックスの作成に伴うエラーから来て、他のcreateindexコールがブロックされてインデックスを再構築していると私に信じさせていました。申し訳ありません、I3arnonはここにあります。 –

+0

ConfirmIndexがそうではないのに対し、CreateIndexは私のコードでは廃止とマークされているようです。この情報は間違いありませんか?私は、バージョンの更新でどのバージョンが廃止されたのかを変更してしまったとは思えませんでした(私たちが異なるバージョンのコードを見ているとは信じられません)。 – Chris

関連する問題