반환할 필드 지정
개요
이 가이드에서는 프로젝션 을 사용하여 읽기 작업에서 반환할 필드를 지정하는 방법을 배울 수 있습니다. 프로젝션은 MongoDB가 쿼리에서 반환하는 필드를 지정하는 문서입니다.
샘플 데이터
이 가이드 의 예제에서는 Atlas 샘플 데이터 세트 의 sample_restaurants.restaurants
컬렉션 을 사용합니다. 무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 빠른 시작을 참조하세요.
프로젝션 유형
프로젝션 을 사용하여 반환 문서 에 포함할 필드를 지정하거나 제외할 필드를 지정할 수 있습니다.
프로젝션 에 포함할 특정 필드를 지정할 때 다른 모든 필드는 암시적으로 제외됩니다( 기본값 포함되는 _id
필드 제외). _id
필드 를 제외하지 않는 한 단일 프로젝션 에서 포함 및 제외 문을 결합할 수 없습니다.
반환 문서 에서 _id
필드 를 제거 하려면 해당 필드를 명시적으로 제외해야 합니다.
포함할 필드 지정
결과에 포함할 필드를 지정하려면 Project()
메서드를 Find()
메서드에 연결합니다. Project()
메서드를 호출할 때는 프로젝션 정의를 매개변수로 전달해야 합니다. Builders<T>.Projection.Include()
메서드를 사용하고 매개 변수로 포함할 필드 이름을 전달하여 프로젝션 정의를 구성할 수 있습니다. 이 메서드를 연결하여 프로젝션 에 여러 필드를 포함할 수 있습니다.
다음 예시 에서는 Find()
메서드를 사용하여 name
필드 값이 "Emerald Pub"
인 모든 레스토랑을 찾습니다. 그런 다음 이 코드는 Project()
메서드를 호출하여 결과에 name
및 cuisine
필드를 포함하도록 찾기 작업에 지시합니다.
var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub"); var projection = Builders<BsonDocument>.Projection .Include("name") .Include("cuisine"); var results = collection.Find(filter).Project(projection).ToList(); foreach (var result in results) { Console.WriteLine(result.ToJson()); }
{ "_id" : ObjectId("..."), "cuisine" : "American", "name" : "Emerald Pub" } { "_id" : ObjectId("..."), "cuisine" : "American", "name" : "Emerald Pub" }
필드 제외 _id
포함할 필드를 지정할 때 반환된 문서에서 _id
필드를 제외할 수도 있습니다.
다음 예시 에서는 앞의 예시 와 동일한 쿼리 를 실행하지만 프로젝션 에서 _id
필드 를 제외합니다.
var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub"); var projection = Builders<BsonDocument>.Projection .Include("name") .Include("cuisine") .Exclude("_id"); var results = collection.Find(filter).Project(projection).ToList(); foreach (var result in results) { Console.WriteLine(result.ToJson()); }
{ "cuisine" : "American", "name" : "Emerald Pub" } { "cuisine" : "American", "name" : "Emerald Pub" }
제외할 필드 지정
결과에서 제외할 필드를 지정하려면 Project()
메서드를 Find()
메서드에 연결합니다. Builders<T>.Projection.Exclude()
메서드를 사용하고 제외할 필드 이름을 매개 변수로 전달하여 프로젝션 에서 필드를 제외할 수 있습니다. 이 메서드를 연결하여 프로젝션 에서 여러 필드를 제외할 수 있습니다.
다음 예시 에서는 Find()
메서드를 사용하여 name
필드 값이 "Emerald Pub"
인 모든 레스토랑을 찾습니다. 그런 다음 프로젝션 을 사용하여 반환된 문서에서 cuisine
필드 를 제외합니다.
var filter = Builders<BsonDocument>.Filter.Eq("name", "Emerald Pub"); var projection = Builders<BsonDocument>.Projection .Exclude("cuisine"); var results = collection.Find(filter).Project(projection).ToList(); foreach (var result in results) { Console.WriteLine(result.ToJson()); }
{ "_id" : ObjectId("..."), "address" : { "building" : "308", "coord" : [-74.008493599999994, 40.725807199999998], "street" : "Spring Street", "zipcode" : "10013" }, "borough" : "Manhattan", "grades" : [{ "date" : ISODate("2014-02-24T00:00:00Z"), "grade" : "A", "score" : 5 }, { "date" : ISODate("2013-08-26T00:00:00Z"), "grade" : "A", "score" : 13 }, { "date" : ISODate("2013-03-04T00:00:00Z"), "grade" : "A", "score" : 12 }, { "date" : ISODate("2012-06-25T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-12-23T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-07-26T00:00:00Z"), "grade" : "C", "score" : 32 }], "name" : "Emerald Pub", "restaurant_id" : "40367329" } { "_id" : ObjectId("..."), "address" : { "building" : "18301", "coord" : [-73.791184999999999, 40.740119999999997], "street" : "Horace Harding Expressway", "zipcode" : "11365" }, "borough" : "Queens", "grades" : [{ "date" : ISODate("2014-05-07T00:00:00Z"), "grade" : "A", "score" : 12 }, { "date" : ISODate("2013-04-30T00:00:00Z"), "grade" : "A", "score" : 9 }, { "date" : ISODate("2012-03-01T00:00:00Z"), "grade" : "A", "score" : 13 }], "name" : "Emerald Pub", "restaurant_id" : "40668598" }
추가 정보
프로젝션에 학습 보려면 MongoDB Server 매뉴얼의 프로젝트 필드 가이드 를 참조하세요.
API 문서
이 가이드 에 설명된 함수 또는 유형에 학습 보려면 다음 API 설명서를 참조하세요.