cma*_*ant 6 graph-databases gremlin tinkerpop3
在现代图中,我想为每个人获取他创建的软件的名称和名称列表。所以我尝试了以下查询
g.V().hasLabel('person').project('personName','softwareNames').
by(values('name')).
by(out('created').values('name').aggregate('a').select('a'))
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
The provided traverser does not map to a value: v[2]->[VertexStep(OUT,[created],vertex), PropertiesStep([name],value), AggregateStep(a), SelectOneStep(last,a)]
Run Code Online (Sandbox Code Playgroud)
问题似乎在于顶点2没有“创建”的边。
如果仅在具有至少一个“已创建”边缘的顶点上运行查询,则该查询有效,例如对于顶点4(“ V(4)”而不是“ V()”),结果为
==>[personName:josh,softwareNames:[ripple,lop]]
Run Code Online (Sandbox Code Playgroud)
如何获得顶点2的软件名称的空列表,而不是错误的列表?
ste*_*tte 10
您可以将Gremlin简化为:
gremlin> g.V().hasLabel('person').
......1> project('personName','softwareNames').
......2> by('name').
......3> by(out('created').values('name').fold())
==>[personName:marko,softwareNames:[lop]]
==>[personName:vadas,softwareNames:[]]
==>[personName:josh,softwareNames:[ripple,lop]]
==>[personName:peter,softwareNames:[lop]]
Run Code Online (Sandbox Code Playgroud)
该by()调制器只能执行next()传递给它的内部遍历,所以你需要给自己减少的结果-在这种情况下,fold()这是否和手柄,你有一个空的结果的情况。
| 归档时间: |
|
| 查看次数: |
1460 次 |
| 最近记录: |