우리는 컬렉션이 서버에있는 문서를 포함하고 있습니다. 각 문서는 다음과 같습니다 :MongoDB C# 드라이버를 사용하여 쿼리의 필드 포함/제외 2.4
{ _id: "...", Prop1: "", Prop2: "", Prop3: "", LargeField: "", ... }
다른 많은 입력란이 있지만 클라이언트에서는 필요하지 않습니다. 내가 해봤
public class MyDoc {
public string Id { get; set; }
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
public string LargeField { get; set; }
}
:
나는 누구의 정의입니다 MyDoc
클래스로 문서를로드 할
var client = new MongoClient(uri);
var database = client.GetDatabase("MyDatabase");
var collection = database.GetCollection<MyDocs>("MyDocs");
var allDocs = collection.Find().ToList();
는 그 다음 각 문서에 대한 모든 필드를로드, 그래서에 있습니다 MyDoc
에 [BsonIgnoreExtraElements]
을 입력하십시오. 여기서 문제는 문서가 큽니다. 그러나 필자는 필드의 부분 집합 만 필요합니다. 클래스에 정의 된 필드 만 필요하다는 것을 드라이버에게 알릴 수 있습니까?
그렇지 않은 경우 결과 집합을 더 작게 만들려면 LargeField
과 같은 일부 필드를 제외 할 수 있습니까? 나는 시도했다 :
var fieldsBuilder = Builders<MyDoc>.Projection;
var fields = fieldsBuilder.Exclude(d => d.LargeField);
var allDocs = collection.Find().Project(fields).ToList();
하지만 지금 allDocs
는 BsonDocument
목록 대신 MyDoc
목록이됩니다. 프로젝션으로 MyDoc
을 어떻게 쿼리합니까?
누군가 도움을 줄 수 있습니까? 그것은 레거시 MongoDB 드라이버에서 다소 단순하지만 새로운 드라이버에서 어떻게 해야할지 모르겠습니다. 감사.