Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
EF 핵심 제공자
/

쿼리 데이터

Entity Framework Core를 사용하면 데이터베이스 명령을 명시적으로 실행 하지 않고도 애플리케이션 에서 데이터로 작업할 수 있습니다. 데이터를 쿼리 하려면 LINQ(Language-Integrated Query) 구문을 사용합니다. LINQ를 사용하면 C# 관련 키워드 및 연산자를 사용하여 강력한 형식의 쿼리를 쓰기 (write) 수 있습니다. 애플리케이션 을 실행 하면 EF Core Provider가 자동으로 LINQ 쿼리를 변환하고 MongoDB 쿼리 API 를 사용하여 데이터베이스 에서 실행합니다.

이 가이드 에서는 EF Core Provider를 사용하도록 구성된 애플리케이션 에서 일반적인 쿼리 작업의 예를 확인할 수 있습니다.

EF 코어 제공자를 사용하도록 애플리케이션 을 구성하는 방법을 학습 보려면 EF 코어 제공자 구성을 참조하세요.

FirstOrDefault() 메서드를 사용하여 단일 엔터티를 찾거나 Where() 메서드를 사용하여 여러 엔터티를 찾습니다.

FirstOrDefault() 메서드는 collection에서 검색 기준과 일치하는 첫 번째 엔터티를 반환하고, 일치하는 엔터티가 없으면 null 를 반환합니다.

다음 코드는 FirstOrDefault() 메서드를 사용하여 Planets DBSet 에서 name 필드가 'mercury'인 행성을 찾아 콘솔에 행성 이름을 출력합니다.

var planet = db.Planets.FirstOrDefault(p => p.name == "Mercury");
Console.WriteLine(planet.name);

Where() 메서드를 사용하여 collection에서 여러 엔터티를 검색할 수 있습니다. Where() 은 검색 기준과 일치하는 모든 엔터티를 반환합니다.

다음 코드는 Where() 메서드를 사용하여 hasRings 필드가 true 로 설정된 모든 행성을 찾고 행성 이름을 콘솔에 출력합니다.

var planets = db.Planets.Where(p => p.hasRings);
foreach (var p in planets)
{
Console.WriteLine(p.name);
}

OrderBy() 메서드를 사용하여 쿼리에서 엔터티를 반환할 순서를 지정합니다. OrderBy() 지정된 정렬 기준에 따라 요소를 오름차순으로 정렬합니다.

다음 코드는 OrderBy() 메서드를 사용하여 모든 행성을 찾아 orderFromSun 필드 값을 기준으로 오름차순으로 정렬합니다. 그런 다음 결과를 콘솔에 인쇄합니다.

var planetList = db.Planets.OrderBy(p => p.orderFromSun);
foreach (var p in planetList)
{
Console.WriteLine(p.name);
}
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

내림차순 정렬

OrderByDescending() 메서드를 사용하여 쿼리 결과를 내림차순으로 정렬할 수 있습니다.

ThenBy() 메서드를 사용하여 쿼리를 2차 정렬할 수 있습니다. ThenBy() 메서드는 지정된 정렬 기준에 따라 OrderBy() 메서드의 결과를 오름차순으로 정렬합니다. ThenBy() 메서드는 OrderBy() 메서드에 연결되어야 합니다.

내림차순으로 2차 정렬

ThenByDescending() 메서드를 사용하여 내림차순으로 2차 정렬을 수행할 수 있습니다.

다음 코드에서는 OrderBy()ThenBy() 메서드를 사용하여 모든 행성을 찾아 hasRings() 필드를 기준으로 정렬하고, name 필드에서 2차 정렬을 수행합니다.

var planetList = db.Planets.OrderBy(o => o.hasRings).ThenBy(o => o.name);
foreach (var p in planetList)
{
Console.WriteLine("Has rings: " + p.hasRings + ", Name: " + p.name);
}
Has rings: False, Name: Earth
Has rings: False, Name: Mars
Has rings: False, Name: Mercury
Has rings: False, Name: Venus
Has rings: True, Name: Jupiter
Has rings: True, Name: Neptune
Has rings: True, Name: Saturn
Has rings: True, Name: Uranus

부울 값이 있는 필드를 정렬할 때 필드 값이 false 인 엔터티가 값이 true 인 엔터티보다 먼저 표시됩니다.

EF Core Provider는 다음과 같은 스칼라 집계 메서드를 지원합니다.

  • Count(): 컬렉션 의 요소 수 또는 조건자와 일치하는 문서 수를 반환합니다.

  • LongCount(): 컬렉션 의 요소 수를 long 로 반환하거나 술어와 일치하는 문서 수를 반환합니다.

  • Any(): 컬렉션 의 요소가 조건자와 일치하는 경우 true 를 반환합니다.

  • Max(): 컬렉션 에 있는 지정된 필드 의 최대값을 반환합니다.

  • Min(): 컬렉션 에 있는 지정된 필드 의 최소값을 반환합니다.

  • Sum(): 컬렉션 에서 지정된 필드 값의 합계를 반환합니다.

  • Average(): 컬렉션 에 있는 지정된 필드 값의 평균을 반환합니다.

다음 섹션에서는 앞의 각 메서드의 예를 보여줍니다.

다음 예시 에서는 Count() 메서드를 사용하여 Planets 컬렉션 의 요소 수를 계산합니다.

var planetCount = db.Planets.Count();
Console.WriteLine("Planet Count: " + planetCount);

다음 예시 에서는 Count() 메서드를 사용하여 Planets 컬렉션 에서 hasRings 필드 가 true로 설정하다 요소의 수를 계산합니다.

var planetCountWithRings = db.Planets.Count(p => p.hasRings);
Console.WriteLine("Planet Count with Rings: " + planetCountWithRings);

다음 예시 에서는 LongCount() 메서드를 사용하여 Planets 컬렉션 의 요소 수를 계산하고 결과를 long로 반환합니다.

var planetCountLong = db.Planets.LongCount();
Console.WriteLine("Long Planet Count: " + longCount);

다음 예시 에서는 LongCount() 메서드를 사용하여 Planets 컬렉션 에서 true 로 설정하다 hasRings 필드 있는 요소의 수를 계산하고 결과를 long로 반환합니다.

var planetCountLongWithRings = db.Planets.LongCount(p => p.hasRings);
Console.WriteLine("Long Planet Count with Rings: " + planetCountLongWithRings);

다음 예시 에서는 Any() 메서드를 사용하여 Planets 컬렉션 의 요소에 hasRings 필드 true로 설정하다 있는지 확인합니다.

var results = db.Planets.Any(p => p.hasRings);
foreach (var p in results)
{
Console.WriteLine("Planet with Rings: " + p.name);
}

다음 예시 에서는 Max() 메서드를 사용하여 Planets 컬렉션 에서 orderFromSun 필드 의 최대값을 찾습니다.

var furthestPlanet = db.Planets.Max(p => p.orderFromSun);
Console.WriteLine("Furthest Planet: " + furthestPlanet.name);

다음 예시 에서는 Min() 메서드를 사용하여 Planets 컬렉션 에서 orderFromSun 필드 의 최소값을 찾습니다.

var closestPlanet = db.Planets.Min(p => p.OrderFromSun);
Console.WriteLine("Closest Planet: " + closestPlanet.Name);

다음 예시 에서는 Sum() 메서드를 사용하여 Planets 컬렉션 에서 mass 필드 의 합계를 찾습니다.

var totalMass = db.Planets.Sum(p => p.mass);
Console.WriteLine("Total Mass of Planets: " + totalMass);

다음 예시 에서는 Average() 메서드를 사용하여 Planets 컬렉션 에서 mass 필드 의 평균값을 찾습니다.

var averageMass = db.Planets.Average(p => p.mass);
Console.WriteLine("Average Mass of Planets: " + averageMass);

MongoDB 의 애그리게이션에 대해 자세히 학습 MongoDB Server 매뉴얼의애그리게이션 작업 가이드 참조하세요.

이 가이드에 설명된 메서드에 대해 자세히 알아보려면 다음 .NET API 문서 링크를 참조하세요.

돌아가기

구성

이 페이지의 내용