Я хочу запросить документ (документ продукта) со словарем, определенным как массив документов. В 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": []
},
...
]
},
...
}
Как можно Ли исправить запрос?