О первой проблеме, группирующей ваши продукты, которая может быть решена с помощью COLLECT
. Предполагая, что вы получаете ваши продукты из коллекции col
, вы можете написать
FOR doc IN col
COLLECT groupNumber = doc.groupNumber, name = doc.name, description = doc.description INTO sizes = doc.size
RETURN CONCAT(name, " ", description, " sizes: ", CONCAT_SEPARATOR(",", sizes))
.
С вашими примерами это дает
[
"product2 someDescription sizes: 5,15,25,35",
"product1 someDescription sizes: 5,15,25,35"
]
. Возможно, вы захотите добавить оператор SORT
после COLLECT
, чтобы получить желаемый порядок.
Чтобы перейти ко второй проблеме, например, нумерации страниц, используйте LIMIT
. Например,
FOR doc IN col
COLLECT groupNumber = doc.groupNumber, name = doc.name, description = doc.description INTO sizes = doc.size
LIMIT @offset, 25
RETURN CONCAT(name, " ", description, " sizes: ", CONCAT_SEPARATOR(",", sizes))
и задайте для параметра привязки offset
значение 0
для извлечения первой страницы, 25
для второй и т. Д.
Если вы хотите динамически c размер страницы, просто замените LIMIT @offset, 25
на LIMIT @offset, @limit
и добавьте дополнительный параметр связывания.