如何使用C#驱动程序检查MongoDB中是否存在集合?

时间:2014-07-29 13:58:46

标签: c# mongodb mongodb-.net-driver

在C#中是否有办法检查MongoDB数据库中是否已存在具有特定名称的集合?

4 个答案:

答案 0 :(得分:42)

@ 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();
    }

答案 1 :(得分:5)

你可以这样做:

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

答案 2 :(得分:5)

@Ofir的答案是正确的。这是围绕ListCollectionNames API构建的同步替代方法:

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

    return database.ListCollectionNames(options).Any();
}

答案 3 :(得分:1)

以上答案是正确的,但这是使用最新驱动程序 (MongoDB.Driver 2.11.6) 的另一种方法;

public async Task<bool> IsCollectionExistsAsync(string collectionName)
{
    MongoClient dbClient = new(_connectionString);

    IMongoDatabase database = dbClient.GetDatabase(_databaseName);

    IMongoCollection<BsonDocument> mongoCollection = database.GetCollection<BsonDocument>(collectionName);
            
    if (mongoCollection != null)
    {
        return true;
    }

    return false;
}