Получить вершину с определенными ребрами - удалить дубликаты

Мне нужно экспортировать вершину с некоторыми из связанных с ней. Без всякой проекции - просто как есть (как дамп данных). Чего я хочу добиться, так это удалить лишние вершины в результате (документ json). Предположим, что существует структура графа:

g.V().has('id', '000-000').as('a').out().as('b').out().as('c').select('a','b','c')
==>[a:v[1],b:v[4],c:v[5]]
==>[a:v[1],b:v[4],c:v[3]]

Я хотел бы получить результат в формате, например:

==>[a:v[1],b:v[4],[c:v[5], c:v[3]]]

Если будет больше b или c вершин, то примерно так:

==>[a:v[1],[b:v[4],b:v[7]],[c:v[5], c:v[3], c:v[9]]]

Просто чтобы уменьшить размер выходных данных (в json).

В настоящее время я получаю что-то вроде этого:

[{
    "a": {},
    "b4": {},
    "c5": {}
},
{
    "a": {},
    "b4": {},
    "c3": {}
}]

А хотелось бы иметь:

[{
    "a": {},
    "b": [
        {b4},
        {b4}
    ],
    "c": [
        {c5}, 
        {c3}
    ]
]}

Какие операторы я должен использовать для достижения этого?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
15
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Лучший способ сделать это — использовать шаг project() в Gremlin. Если вам нужен список значений в каждом поле, вы можете использовать fold(), чтобы поместить их в список. Пример:

g.('000-000').project('a','b','c')
     .by()
     .by(out().fold())
     .by(out().out().fold())

Другие вопросы по теме