#c# #json #mongodb
#c# #json #mongodb
Вопрос:
Это мой запрос:
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
объект в массиве результатов сделок.
Мой класс c #:
public class Deal
{
public int DealId {get; set;}
public string Name {get; set;}
public IEnumerable<Product> Products {get; set;}
}
Мой вопрос в том, как спроецировать результат Json
на строгий тип C # и существует ли способ получить только один объект сделки (не массив)?
Комментарии:
1. json2csharp.com .
exist way to get the only one Deal object (not array)
Сначала запустите свой код, затем вы можете написать служебные функции для возврата одного объекта.
Ответ №1:
Для этого вы можете использовать BsonSerializer
var MyDeals = BsonSerializer.Deserialize<List<Deal>>(aggregationResult);
Комментарии:
1. Спасибо! Я использовал project.