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())
方法在我看来有点复杂,也许有一个更简单的解决方案。