Graph databases 如何将列表中的每个元素包装成一个对象?

Graph databases 如何将列表中的每个元素包装成一个对象?,graph-databases,gremlin,tinkerpop,tinkerpop3,Graph Databases,Gremlin,Tinkerpop,Tinkerpop3,我有下面的小精灵查询,其中我查询多个边,然后是它们伴随的垂直 outE('childSolution') .inV() .local(union( identity() .valueMap(true) .project('solution') ,

我有下面的小精灵查询,其中我查询多个边,然后是它们伴随的垂直

     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... }
          }
         }
     ]

任何帮助都将不胜感激

当询问有关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()
来说明这些键中应该包含什么。这次遍历的输出并不完全符合您的要求,但我认为我在精神上是正确的。如果您想让它精确匹配,那么最好在问题中提供一个示例图。

当询问有关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()
来说明这些键中应该包含什么。这次遍历的输出并不完全符合您的要求,但我认为我在精神上是正确的。如果您希望它精确匹配,那么最好在您的问题中提供一个示例图。

您能提供一个示例图和您提出的完整查询吗?
.local(union())
方法在我看来有点复杂,也许有一个更简单的解决方案。您能提供一个示例图和您提出的完整查询吗?
.local(union())
方法在我看来有点复杂,也许有一个更简单的解决方案。