programing

C# 드라이버를 사용하여 MongoDB에 컬렉션이 있는지 확인하는 방법은 무엇입니까?

javamemo 2023. 6. 19. 21:04
반응형

C# 드라이버를 사용하여 MongoDB에 컬렉션이 있는지 확인하는 방법은 무엇입니까?

C#에서 특정 이름을 가진 컬렉션이 내 MongoDB 데이터베이스에 이미 있는지 확인할 수 있는 방법이 있습니까?

@im1 드라이버 버전 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();
    }

@그들의 대답은 정확합니다.여기 동기식 대안이 있습니다.ListCollectionNamesAPI:

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()

언급URL : https://stackoverflow.com/questions/25017219/how-to-check-if-collection-exists-in-mongodb-using-c-sharp-driver

반응형