0

集約流暢なApiを使用してmongodbからデータを取得しようとしています。私はそれは常に私のXyzSummaryモデルです集約Fluent APIプロジェクトメソッドIdを追加していません

[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」空を示し強くここ

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(); 

を入力してヌル同上を示し、プロジェクトの方法で問題が生じています私は投影からクラス名を削除しますが、それは正常に動作しますが、クラス名では常に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

関連する問題