在C#中是否有办法检查MongoDB数据库中是否已存在具有特定名称的集合?
答案 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;
}