Сопоставить целочисленный словарь со словарем DTO - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу запросить документ (документ продукта) со словарем, определенным как массив документов. В C# я определил его как:

[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfDocuments)]
public Dictionary<int, List<int>> ColorToPhotos { get; set; }

Моя цель - отобразить

from Dictionary<int, List<int>>
to   Dictionary<ColorDto, List<PhotoDto>>

Поэтому у меня есть следующая схема:

Продукт

[
    {
        "_id": "1111",
        "name": "Awesome T-Shirt"
        "colorToPhotos": [
            {
                k: 1,
                v: [3, 4, 5]
            },
            {
                k: 2,
                v: [7, 8, 9]
            },
            ...
        ]
    },
    ...
}

ColorDto

{
    "id": integer
    "name": string
}

PhotoDto

{
    "id": integer
    "name": string
}

Ожидаемый результат (ProductDto)

[
    {
        "_id": "1111",
        "name": "Awesome T-Shirt"
        "colorToPhotos": [
            {
                k: {"_id": 1, "name": "red"}
                v: [
                    {
                      id: 3,
                      name: "red-t-shirt-front.jpg",
                    },
                    {
                      id: 4,
                      name: "red-t-shirt-back.jpg",
                    },
                    {
                      id: 3,
                      name: "red-t-shirt-child.jpg",
                    }
                ]
            },
            ...
        ]
    },
    ...
}

Проблема в том, что мой запрос содержит пустой массив "photos".

{
  from: 'color',
  let: {
    'photoIds': '$colorToPhotos.v'
  },
  pipeline: [
    {
      $addFields: {
        'photoIds': '$$photoIds'
      }
    },
    {
      $lookup: {
        from: 'photo',
        localField: 'photoIds',
        foreignField: '_id',
        as: 'photos'
      }
    }
  ],
  as: 'colorToPhotos'
}

Результат:

[
    {
        "_id": "1111",
        "name": "Awesome T-Shirt"
        "colorToPhotos": [
            {
                "_id": 1,
                "name": "red",
                "photoIds": [...],
                "photos": []
            },
            ...
        ]
    },
    ...
}

Как можно Ли исправить запрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...