문서 메뉴
문서 홈
/ / /
C#/.NET
/ / /

데이터 조회

이 페이지의 내용

  • 개요
  • 샘플 데이터
  • 문서 찾기
  • 하나의 문서 찾기
  • 여러 문서 찾기
  • 검색 동작 수정
  • 예제
  • 추가 정보
  • API 문서

이 가이드에서는 MongoDB .NET/C# 드라이버를 사용하여 읽기 작업을 통해 MongoDB 컬렉션에서 데이터를 조회하는 방법을 배울 수 있습니다. Find() 메서드를 호출하여 기준의 설정과 일치하는 문서를 조회할 수 있습니다.

인터랙티브 랩

이 페이지에는 Find() 메서드를 사용하여 데이터를 조회하는 방법을 보여주는 짧은 인터랙티브 실습이 포함되어 있습니다. MongoDB 또는 코드 편집기를 설치하지 않고도 브라우저 창에서 직접 이 실습을 완료할 수 있습니다.

실습을 시작하려면 페이지 상단의 Open Interactive Tutorial 버튼을 클릭하세요. 실습을 전체 화면 형식으로 확장하려면 실습 창의 오른쪽 상단 모서리에 있는 전체 화면 버튼()을 클릭합니다.

이 가이드의 예제에서는 Atlas 샘플 데이터 세트sample_restaurants.restaurants 컬렉션을 사용합니다. 무료 MongoDB Atlas 클러스터를 생성하고 샘플 데이터 세트를 로드하는 방법을 알아보려면 빠른 시작을 참조하세요.

이 페이지의 예제에서는 다음 Restaurant, AddressGradeEntry 클래스를 모델로 사용합니다:

public class Restaurant
{
public ObjectId Id { get; set; }
public string Name { get; set; }
[BsonElement("restaurant_id")]
public string RestaurantId { get; set; }
public string Cuisine { get; set; }
public Address Address { get; set; }
public string Borough { get; set; }
public List<GradeEntry> Grades { get; set; }
}
public class Address
{
public string Building { get; set; }
[BsonElement("coord")]
public double[] Coordinates { get; set; }
public string Street { get; set; }
[BsonElement("zipcode")]
public string ZipCode { get; set; }
}
public class GradeEntry
{
public DateTime Date { get; set; }
public string Grade { get; set; }
public float? Score { get; set; }
}

참고

restaurants 컬렉션의 문서는 카멜 케이스 명명 규칙을 사용합니다. 이 가이드의 예제에서는 ConventionPack 사용하여 컬렉션의 필드를 파스칼식 대/소문자로 역직렬화하고 Restaurant 클래스의 속성에 매핑합니다.

사용자 지정 직렬화에 대해 자세히 알아보려면 사용자 지정 직렬화를참조하세요.

컬렉션에서 문서를 검색하려면 Find() 메서드를 사용합니다. Find() 메서드는 쿼리 필터를 사용하여 일치하는 모든 문서를 반환합니다. 쿼리 필터는 쿼리에서 검색하려는 문서를 지정하는 객체입니다.

쿼리 필터에 대해 자세히 알아보려면 쿼리 지정을 참조하세요.

컬렉션에서 단일 문서를 찾으려면 찾으려는 문서의 기준을 지정하는 쿼리 필터를 전달한 다음 FirstOrDefault() 또는 FirstOrDefaultAsync() 메서드를 체인으로 연결합니다. 쿼리 필터와 일치하는 문서가 두 개 이상인 경우, 이 메서드는 조회된 결과에서 처음 일치하는 문서를 반환합니다. 쿼리 필터와 일치하는 문서가 없는 경우 메서드는 null을 반환합니다.

var restaurants = await _restaurantsCollection.Find(filter).FirstOrDefaultAsync();
var restaurants = _restaurantsCollection.Find(filter).FirstOrDefault();

첫 번째 문서

FirstOrDefault() 메서드는 정렬 기준이 지정되지 않은 경우 디스크에 기본 순서 에 따라 첫 번째 문서를 반환합니다.

Find() 메서드를 사용하여 단일 문서를 찾는 예시 전체를 보려면 추가 정보를 참조하세요.

컬렉션에서 여러 문서를 찾으려면 검색하려는 문서의 기준을 지정하는 Find() 메서드에 쿼리 필터를 전달합니다.

커서를 사용하여 Find() 메서드에서 반환한 문서를 반복할 수 있습니다. 커서는 애플리케이션이 주어진 시간에 데이터베이스 결과의 하위 집합만 메모리에 유지하면서 데이터베이스 결과를 반복할 수 있는 메커니즘입니다. 커서는 Find() 메소드가 많은 양의 문서를 반환할 때 유용합니다.

커서를 사용하여 문서를 반복하려면 찾으려는 문서의 기준을 지정하는 Find() 메서드에 쿼리 필터를 전달한 다음 ToCursor() 또는 ToCursorAsync() 메서드를 연결합니다. 동기 또는 비동기 예제를 보려면 해당 탭을 선택합니다.

var restaurants = await _restaurantsCollection.Find(filter).ToCursorAsync();
var restaurants = _restaurantsCollection.Find(filter).ToCursor();

적은 수의 문서를 반환하거나 결과를 List 객체로 반환해야 하는 경우 ToList() 또는 ToListAsync() 메서드를 사용합니다.

컬렉션에서 여러 문서를 찾아 메모리에 목록으로 보관하려면 찾으려는 문서의 기준을 지정하는 Find() 메서드에 쿼리 필터를 전달한 다음 ToList() 또는 ToListAsync() 메서드를 연결합니다. 동기 또는 비동기 예제를 보려면 해당 탭을 선택합니다.

var restaurants = await _restaurantsCollection.Find(filter).ToListAsync();
var restaurants = _restaurantsCollection.Find(filter).ToList();

Find() 메서드를 사용하여 여러 문서를 찾는 전체 예시를 보려면 추가 정보를 참조하세요.

참고

모든 문서 찾기

컬렉션의 모든 문서를 찾으려면 Find() 메서드에 빈 필터를 전달합니다.

var filter = Builders<Restaurant>.Filter.Empty;
var allRestaurants = _restaurantsCollection.Find(filter);

Find() 메서드를 사용하여 모든 문서를 찾는 실행 가능한 예시 전체를 보려면 추가 정보를 참조하세요.

FindOptions 객체를 전달하여 Find() 메서드의 동작을 수정할 수 있습니다.

다음 메서드를 통해 일반적으로 사용되는 옵션을 구성할 수 있습니다

메서드
설명
BatchSize
Gets or sets the number of documents to hold in a cursor at a given time.
Collation
Sets the collation options.
Comment
Sets the comment to the query. To learn more about query comments, see the $comment page.
Hint
Sets the hint for which index to use.
MaxTime
Sets the maximum execution time on the server for this operation.

사용 가능한 옵션의 전체 목록을 보려면 FindOptions 속성을 참조하세요.

이 예에서는 다음 조치를 수행합니다.

  • cuisine 필드에 'Pizza'가 포함된 모든 문서를 찾습니다.

  • .BatchSize3으로 설정

  • 결과를 커서에 저장

  • 커서가 참고한 문서를 인쇄합니다.

var filter = Builders<Restaurant>.Filter.Eq("cuisine", "Pizza");
var findOptions = new FindOptions { BatchSize = 3 };
using (var cursor = _restaurantsCollection.Find(filter, findOptions).ToCursor())
{
foreach (var r in cursor.ToEnumerable())
{
WriteLine(r.Name);
}
}
Pizza Town
Victoria Pizza
...

정리

커서가 더 이상 사용되지 않을 때 자동으로 Dispose() 메서드를 호출하도록 성명서를 사용하여 커서를 만듭니다.

쿼리 필터에 대해 자세히 알아보려면 쿼리 지정을 참조하세요.

LINQ를 사용하여 쿼리를 지정하는 방법을 알아보려면 LINQ를 참조하세요.

Find() 메서드의 실행 가능한 예제를 보려면 문서 찾기 페이지를 참조하세요.

이 가이드에서 설명하는 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

읽기 작업

다음

문서 수 계산