Игнорируя groupNumber
и группируя по name
, запрос выглядит следующим образом:
FOR p IN products
COLLECT description = p.description, name = p.name INTO groups
RETURN {
"name" : name,
"description": description,
"prices" : groups[*].p.price,
"sizes" : groups[*].p.size
}
С учетом ваших (исправленных) примерных данных запрос возвращает:
[
{
"name": "product1",
"description": "someDescription",
"prices": [
12,
84,
106,
26
],
"sizes": [
5,
25,
35,
15
]
},
{
"name": "product2",
"description": "someDescription",
"prices": [
43,
32,
22,
12
],
"sizes": [
35,
25,
15,
5
]
}
]
Сгруппированные значения не отсортированы, но позиции размеров и цен соответствуют, вы можете смягчить этот факт, чтобы сжать значения в карту размера-цены:
FOR p IN products
COLLECT description = p.description, name = p.name INTO groups
RETURN {
"name" : name,
"description": description,
"size_price_map" : ZIP(groups[*].p.size, groups[*].p.price)
}
, что дает:
[
{
"name": "product1",
"description": "someDescription",
"size_price_map": {
"5": 12,
"15": 26,
"25": 84,
"35": 106
}
},
{
"name": "product2",
"description": "someDescription",
"size_price_map": {
"5": 12,
"15": 22,
"25": 32,
"35": 43
}
}
]