web-dev-qa-db-ja.com

C#ドライバーを使用してMongoDBにコレクションが存在するかどうかを確認する方法

MongoDBデータベースに特定の名前のコレクションが既に存在するかどうかを確認する方法はC#にありますか?

22
mclaassen

あなたはこのようにそれを行うことができます:

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

5
im1dermike

@ im1dermike回答がC#ドライバーバージョン2.0以降で機能しない

ここに代替があります:

    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

@Ofirの答えは正しいです。以下は、ListCollectionNames AP​​Iを中心に構築された同期の代替手段です。

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