Я выполняю задание уменьшения карты, которое выводит полученные данные в коллекцию, элементы в коллекции "products" выглядят так (структура генерируется Mongo, и я не знаю, можно ли ее контролировать):
{
"_id" : { "ProductId" : "1:000001", "ProductTitle" : "Some product with ID 1:000001" },
"value" : { "TotalImpressions" : 3, "TotalClicks" : 40 }
}
В идеале я хочу сопоставить каждую запись следующему плоскому объекту:
public class Product
{
public string ProductId { get; set; }
public string ProductTitle { get; set; }
public int TotalImpressions { get; set; }
}
Это, очевидно, не работает, так как сериализатор ищет свойства "id" и "value" на корневом уровне, которых нет в этом классе. Обходной путь, который у меня есть, - это моделирование объекта по мере его появления, например ::100100
public class ProductRow
{
/* implementation of these objects excluded, but they just reflect the json objects */
public ProductIdentifier Id { get; set; }
public Product value { get; set; }
}
Какая карта в порядке, однако она немного многословна, и я бы предпочел не иметь всех этих дополнительных объектов.
Можно ли настроить десериализатор BSON для поддержки этого сопоставления? Я просмотрел документацию, но не нашел очевидного решения.
NB. В рабочей среде я ограничен .NET 3.5, поэтому помните об этом при рассмотрении ответа.