.NET을 사용하여 MongoDB 데이터베이스 관리

적용 대상: Mongodb

Important

기존 MongoDB 애플리케이션을 마이그레이션하거나 MQL(MongoDB 쿼리 언어) 기능을 사용하시겠습니까? Azure DocumentDB를 고려합니다.

여러 지역에서 99.999% 가용성 서비스 수준 계약, 즉각적인 자동 크기 조정 및 자동 장애 조치(failover)가 있는 대규모 시나리오에 대한 데이터베이스 솔루션을 찾고 있나요? NoSQL용 Azure Cosmos DB를 고려하십시오.

Azure Cosmos DB의 MongoDB 서버는 MongoDB NuGet 패키지에서 사용할 수 있습니다.

비고

예제 코드 조각은 GitHub에서 .NET 프로젝트로 사용할 수 있습니다.

API for MongoDB 참조 설명서 | MongoDB 패키지(NuGet)

데이터베이스 이름 지정

Azure Cosmos DB에서 데이터베이스는 네임스페이스와 유사합니다. 데이터베이스를 만들 때 데이터베이스 이름은 데이터베이스 리소스 및 모든 자식 리소스에 액세스하는 데 사용되는 URI 세그먼트를 형성합니다.

만들어지면 데이터베이스에 대한 URI는 다음과 같은 형식입니다.

https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>

데이터베이스 인스턴스 만들기

MongoClient를 사용하여 데이터베이스 인스턴스를 가져오거나 새로 만들 수 있습니다(데이터베이스 인스턴스가 아직 없는 경우). MongoDatabase 클래스는 컬렉션 및 해당 문서에 대한 액세스를 제공합니다.

다음 코드 조각은 컬렉션에 문서를 삽입하여 새 데이터베이스를 만듭니다. 데이터베이스는 이러한 형식의 작업에 필요할 때까지 만들어지지 않는다는 점을 기억합니다.

var client = new MongoClient(Environment.GetEnvironmentVariable("MONGO_CONNECTION"));

client.GetDatabase("adventureworks").GetCollection<BsonDocument>("products").InsertOne(new BsonDocument() { { "Name", "surfboard" } });

기존 데이터베이스 가져오기

GetDatabase 메서드를 사용하여 이름으로 기존 데이터베이스를 검색하여 컬렉션 및 문서에 액세스할 수도 있습니다.

var collections = client.GetDatabase("adventureworks").ListCollectionNames();
Console.WriteLine($"The database has {collections.ToList().Count} collection.");

모든 데이터베이스의 목록 가져오기

MongoClient를 사용하여 서버의 모든 데이터베이스 목록을 검색할 수 있습니다.

var dbFindList = client.ListDatabaseNames().ToList();

그런 다음, 이 기술을 사용하여 데이터베이스가 이미 있는지 확인할 수 있습니다.

var dbFound = dbFindList.FirstOrDefault(x => x == "adventureworks");
if (dbFound is not null)
{
    Console.WriteLine($"{dbFound} database found");
}
else
{
    Console.WriteLine($"{dbFound} database not found.");
}

데이터베이스 삭제

데이터베이스는 DB 클래스의 DropDatabase 메서드를 사용하여 서버에서 제거됩니다.

client.DropDatabase("adventureworks");

참고하십시오