0

집계 유창한 Api를 사용하여 mongodb에서 데이터를 가져 오려고합니다. 난 강력하게 여기Aggregation Fluent API 추가하지 않는 프로젝트 프로젝트 메서드

var result= await _xyz.Aggregate() 
         .Match(e => 
         e.Id != ObjectId.Empty 
         && e.StartDate.HasValue 
         && e.StartDate >= DateTime.Today 
         && e.ABC.Any(a => abcIds.Contains(a.abcId))) 
         .Project(p => new XyzSummary() 
         { 
          Id= p.Id, 
          Name = p.Name, 
          ABC = (List<ABC>)p.ABC.Where(a => abcIds.Contains(a.abcId)), 
          EventVenue = p.EventVenue, 
          StartDate = p.StartDate, 
          City = p.City, 
          LngLat = p.LngLat, 
         }) 
         .ToListAsync(); 

을 입력하여 항상 널 이드 보여줍니다 프로젝트 방식에 문제가 있습니다 것은

[BsonIgnoreExtraElements] 
public class XyzSummary 
{ 
    [BsonId] 
    public ObjectId Id { get; set; } 
    public string Name { get; set; } 
    public Abcummary EventVenue { get; set; }  
    public DateTime? StartDate { get; set; } 
    public string City { get; set; } 
    public GeoJson2DCoordinates LngLat { get; set; } 
} 

쿼리는 올바른 결과를 반환하지만, 투사 한 후 항상 "ID"를 보여줍니다 내 XyzSummary 모델의 경우 비어 나는 투영에서 클래스 이름을 제거하지만 잘 작동하지만 클래스 이름과 함께 항상 id null을 표시합니다.

아무도 도와주세요.

감사합니다.

+0

클래스에서'Id'를 문자열로 정의하고 매핑했는지 확인해 보셨습니까? 'public String Id {get; 세트; } ' – Veeram

+0

예, 같은 호 – user2797910

답변

0

왜 집계를 사용합니까?

var result = await _xyz.Find(e => e.Id != ObjectId.Empty 
        && e.StartDate.HasValue 
        && e.StartDate >= DateTime.Today) 
        .ToListAsync(); 
어쩌면 내가 뭔가 놓치고 오전 :

이 코드는 같은 일을 할 것입니다. 내가 무엇인지 알려주세요.)

편집 : 뭔가 빠졌습니다.

+0

컬렉션 XYZ에 중첩 배열이 있으므로 집계를 사용하고 있습니다. 중첩 배열 형태로 여러 요소를 선택하고 싶습니다. ElementMatch에서는 첫 번째로 일치하는 요소 만 가져올 수 있습니다. 감사합니다. – user2797910