2015-04-08 12 views
10

Qual è il nuovo modo di creare indici con il nuovo driver 2.0? Non c'è documentazione su questo.Creazione di indici in MongoDB con .NET driver 2.0

Apparentemente questo ora funziona con la nuova interfaccia IndexKeysDefinitionBuilder<> ma questo è tutto ciò che ho ottenuto finora.

+1

Sto avendo lo stesso problema dopo l'aggiornamento alla 2.0! Perché hanno sentito il bisogno di complicare in modo assoluto qualcosa che era semplice !? –

+0

Sto iniziando a piacermi. Vedo da dove vengono le decisioni di progettazione e l'utilizzo dei costruttori in questo caso è coerente con altri usi (costruttori di filtri, ecc.). Mi piace soprattutto che abbiano reso tutto completamente asincrono. È solo (almeno attualmente) non ben documentato e non è facile ottenere informazioni dettagliate o campioni. – hholtij

+0

Sono passati un paio di giorni e mi piace anche, soprattutto le cose asincrone. Sono stati tanti cambiamenti con pochissima documentazione che mi ha frustrato, ho dovuto ricorrere alla lettura della fonte su github ... Sono sicuro che presto lo risolveranno grazie a –

risposta

19

è necessario chiamare e awaitCreateOneAsync con una IndexKeysDefinition si ottiene utilizzando Builders.IndexKeys:

static async Task CreateIndex() 
{ 
    var client = new MongoClient(); 
    var database = client.GetDatabase("db"); 
    var collection = database.GetCollection<Hamster>("collection"); 
    await collection.Indexes.CreateOneAsync(Builders<Hamster>.IndexKeys.Ascending(_ => _.Name)); 
} 

Se non si dispone di un Hamster è anche possibile creare l'indice in modo non fortemente tipizzato dal specificando la rappresentazione json dell'indice:

await collection.Indexes.CreateOneAsync("{ Name: 1 }"); 
+0

Grazie. Sai come farlo per le raccolte BsonDocument? – BigJoe714

+2

@ BigJoe714 Ho aggiornato il post. Questo risponde alla tua domanda? – i3arnon

+0

sì, grazie! – BigJoe714