이전 버전의 mongo 드라이버에서 2.x 드라이버로 업데이트하는 중입니다. 우리가 이전에 가지고 있던 코드를 업데이트하려고 시도하고 있지만, 어떻게 발견하는지 고심하고 있습니다.MongoDB C# 드라이버 (v2.4)가있는 Slice (projection) 파생 클래스 배열
public class BaseClass
{
public string Name { get; set; }
}
public class DerivedClass : BaseClass
{
public IEnumerable<DataClass> Items { get; set; }
}
public class DataClass
{
public string Element1 { get; set; }
public string Element2 { get; set; }
}
우리는이 같은 코드를 가지고 이전 드라이버로 :
var result = collection
.Find(query)
.SetLimit(10)
.SetFields(Fields.Slice("Items", 0, 1));
을 그리고 새 것으로 우리는 다음과 같은 코드가 있습니다
우리의 클래스 구조는 다음과 같은 비트가
var result = collection
.Find(query)
.Limit(10)
.Project<BaseClass>(...);
이 사례에서 데이터는 사용자 의견을 나타내며 두 가지 유형이있을 수 있습니다. 우리의 query
객체는 페이징을 처리하는 코드입니다. 파생 된 형식의 경우 Items 배열의 첫 번째 요소 만 반환하려고합니다. 일치하는 모든 댓글을 함께 반환해야합니다.
제가 직면 한 문제는 Project
이 정적으로 입력되어 있으므로 Builders<BaseClass>.Projection.___
이 필요하다는 것입니다. IFindFluent<BaseClass, BaseClass>
은 As<T>
옵션을 가지고 있지만 예상 투영은 ProjectionDefinition<BaseClass, DerivedClass>
입니다. 그런 정의 객체를 만들 수있는 방법이 없습니다. 몽고 드라이버를 간략히 살펴본 후에도 볼 수 없습니다.
이 작업을 수행하는 쉬운 방법이 있습니까?
왜 누군가가 이것을 떨어 뜨렸는지 잘 모르겠습니다. 나이 든 Mongo 드라이버로는 불가능했던 것이있을 때, 새로운 드라이버로 갑자기 그것을 가능하게 할 수는 없습니다. – john