我有以下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... }
}
}
]
非常感谢任何帮助
答案 0 :(得分:3)
在询问有关Gremlin的问题时,最好提供一个可以生成样本图的Gremlin脚本,以便将其粘贴到Gremlin Console会话中。那样回答的人可以测试他们的结果。在这种情况下,我只需轻轻一点重写你的遍历,但我认为你需要反转你使用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()
说明这些密钥应该包含哪些内容。这次遍历的输出并不完全符合您的要求,但我认为我的精神正确。如果您希望它完全匹配,那么最好是您在问题中提供样本图表。