c# - example - Cómo crear índices en MongoDB a través de.NET
mongodb insert c# (4)
A partir de la versión 2.0 del controlador, hay una nueva API async
. La antigua API ya no se debe usar ya que es una fachada de bloqueo sobre la nueva API y está en desuso.
La forma actualmente recomendada de crear un índice es llamando y esperando CreateOneAsync
con IndexKeysDefinition
que obtiene mediante el uso de 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));
}
He creado programáticamente una nueva colección de documentos utilizando el controlador MongoDB C #.
En este punto, quiero crear y crear índices programáticamente. ¿Cómo puedo hacer eso?
Algo como esto debería hacer:
var server = MongoServer.Create("mongodb://localhost");
var db = server.GetDatabase("myapp");
var users = db.GetCollection<User>("users");
users.EnsureIndex(new IndexKeysBuilder().Ascending("EmailAddress"));
Por favor, vea los siguientes bits en la documentación:
Existe un área completa en Indexación en la página de documentación Definiciones y constructores:
http://mongodb.github.io/mongo-csharp-driver/2.4/reference/driver/definitions/#index-keys
Ejemplo:
IndexKeysDefinition<MyModel> keys = "{ Reference: 1 }";
var indexModel = new CreateIndexModel<MyModel>(keys);
await _context.Indexes.CreateOneAsync(indexModel);
debe usar CreateIndex
ya que EnsureIndex
está marcado como obsoleto para una futura compatibilidad con las siguientes versiones de 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));