如何检查收集是否存在于MongoDB使用c#驱动程序

本文关键字:存在 MongoDB 使用 驱动程序 是否 何检查 检查 | 更新日期: 2023-09-27 18:15:40

在c#中是否有任何方法来检查一个特定名称的集合是否已经存在于我的MongoDB数据库中?

如何检查收集是否存在于MongoDB使用c#驱动程序

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

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

以上答案是正确的,但这里是最新驱动程序(MongoDB)的另一种方法。司机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;
}

你可以这样做:

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