web-dev-qa-db-fra.com

Comment vérifier si la collection existe dans MongoDB à l'aide du pilote C #?

Existe-t-il un moyen en C # pour vérifier si une collection avec un nom spécifique existe déjà dans ma base de données MongoDB?

22
mclaassen

Vous pouvez le faire comme ceci:

database.GetCollection("blah").Exists()

5
im1dermike

@ im1dermike answer ne fonctionne plus pour le pilote c # version 2.0+

Voici une alternative:

    public async Task<bool> CollectionExistsAsync(string collectionName)
    {
        var filter = new BsonDocument("name", collectionName);
        //filter by collection name
        var collections = await GetDatabase().ListCollectionsAsync(new ListCollectionsOptions { Filter = filter });
        //check for existence
        return await collections.AnyAsync();
    }
49
Ofir

La réponse @Ofir est correcte. Voici une alternative synchrone construite autour de l'API ListCollectionNames:

public bool CollectionExists(IMongoDatabase database, string collectionName)
{
    var filter = new BsonDocument("name", collectionName);
    var options = new ListCollectionNamesOptions { Filter = filter };

    return database.ListCollectionNames(options).Any();
}
7
Arnold Zokas