Как мне обернуть каждый элемент в списке в объект? - PullRequest
0 голосов
/ 27 мая 2018

У меня есть следующий запрос gremlin, где я запрашиваю несколько ребер, а затем сопровождающие их вершины

     outE('childSolution')
                .inV()
                .local(union(
                     identity()
                     .valueMap(true)
                     .project('solution')
                    ,
                     outE('writtenBy')
                    .inV()
                    .valueMap(true)
                    .project('originator')
                    , 
                    outE('childProblem')
                    .inV()
                    .valueMap(true)
                    .project('childProblem')
                ))
                .fold()
                .project('childSolutions')

Я получаю обратно

    "childSolutions": [
          { "solution" : { properties... }
          },
          {
            "originator": { properties... }
          }
     ]

, что мне нужно, это

"childSolutions": [
        { "fullSolution : {
          { "solution" : { properties... }
          },
          {
            "originator": { properties... }
          }
         },
        { "fullSolution : {
          { "solution" : { properties... }
          },
          {
            "originator": { properties... }
          }
         }
     ]

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 28 мая 2018

Задавая вопросы о Gremlin, всегда лучше предоставить сценарий Gremlin, который может создать примерный график, чтобы его можно было вставить в сеанс консоли Gremlin.Таким образом, те, кто отвечает, могут проверить свои результаты.В этом случае я просто проведу пальцем по переписыванию вашего обхода, но я думаю, что вам нужно инвертировать то, как вы используете project(), и вы получите гораздо более читаемый обход и тот, который делает то, что вы хотите:

out('childSolution').
project('childSolutions').
  by(project('solution','originator','childProblem')
       by(valueMap(true)).
       by(out('writtenBy').valueMap(true)) 
       by(out('childProblem').valueMap(true)))

С помощью project() вы заранее указываете, какими должны быть ключи, а затем используете by(), чтобы сказать, что должно быть в этих ключах.Результат этого обхода не совсем соответствует тому, что вы хотите, но я думаю, что я понял это по духу.Если вы хотите, чтобы он точно совпадал, то, возможно, будет лучше, если вы предоставите примерный график в своем вопросе.

...