我在下面写了一个简单的查询来遍历Person to Country,但它没有返回任何结果。
g.V().hasLabel("Person").as("p").out("from").hasLabel("Country").as("c").select("p", "c")
在实际数据中,只存在Person
个顶点,并且不存在Country
个顶点或from
个边。我预计至少会返回p
- 基本上我想做一个左外连接。 但是,如果我还有Country
和from
数据,则查询会返回结果。
我使用match
尝试了另一个查询,但除非有实际数据,否则仍无结果:
g.V().hasLabel("Person").has("name","bob").match(__.as("p").out("from").hasLabel("Country").as("c")).select("p", "c")
我正在针对Datastax Enterpise Graph运行这些查询。
知道它为什么没有返回结果吗?
答案 0 :(得分:4)
您获得的结果是预期的。如果没有"来自"然后,移动器基本上死亡并且不再进行任何操作。也许您可以考虑使用project()
:
g.V().hasLabel("Person").
project('name','country').
by('name')
by(out('from').hasLabel('Country').values('name').fold())
"现代" TinkerPop中的玩具图,输出如下:
gremlin> g.V().hasLabel('person').project('name','knows').by().by(out('knows').values('name').fold())
==>[name:v[1],knows:[vadas,josh]]
==>[name:v[2],knows:[]]
==>[name:v[4],knows:[]]
==>[name:v[6],knows:[]]
将来,当您提交有关Gremlin的问题时,请提供一个可以粘贴到Gremlin控制台的Gremlin脚本,这样可以更轻松地尝试更直接地回答您的具体问题。