c# Mongodb.项目Json到强类型后分组

本文关键字:强类型 Mongodb 项目 Json | 更新日期: 2023-09-27 18:12:54

这是我的查询:

db.getCollection('design_ideas').aggregate( 
  { $match : {'Deals.URL': 'warm-up-with-white'}},
  { $unwind : '$Deals' },
  { $match : {'Deals.URL': 'warm-up-with-white'}},
  {$group: {_id : '$Deals.URL', Deals: {$addToSet: '$Deals'}}}
)

c#中的相同查询:

_mongoDB.GetCollection<DesignCategoryMongoModel>("design_ideas")
               .Aggregate()
               .Match(BsonDocument.Parse("{'Deals.URL': 'warm-up-with-white'}"))
               .Unwind("Deals")
               .Match(BsonDocument.Parse("{'Deals.URL': 'warm-up-with-white'}"))
               .Group(BsonDocument.Parse("{_id : '$Deals.URL', Deals: {$addToSet: '$Deals'}}"))               
               .FirstOrDefault();

查询的结果是一个具有如下结构的文档:

{
     _id: 'url',
      Deals: [{
              DealId: 1,
              Name: 'Name',
              Products: [...]
              ...
      }]
}

我知道我总是得到交易结果数组中唯一的一个Deal对象。

My c# class:

public class Deal
{
    public int DealId {get; set;}
    public string Name {get; set;}
    public IEnumerable<Product> Products {get; set;}
}

我的问题是如何将结果Json投射到强c#类型,并且是否存在获得唯一一个Deal对象(不是数组)的方法?

c# Mongodb.项目Json到强类型后分组

可以使用BsonSerializer

var MyDeals = BsonSerializer.Deserialize<List<Deal>>(aggregationResult);