【问题标题】:Simple outer-join like gremlin query not returning any results像 gremlin 查询这样的简单外连接不返回任何结果
【发布时间】:2018-03-08 18:11:27
【问题描述】:

我编写了下面的简单查询来在 Person 到 Country 之间进行遍历,但它没有返回任何结果。

g.V().hasLabel("Person").as("p").out("from").hasLabel("Country").as("c").select("p", "c")

在实际数据中,只存在Person顶点,不存在Country顶点或from边。我希望至少返回p - 基本上我想做一个左外连接。 但是,如果我也有 Countryfrom 数据,则查询会返回结果

我也尝试使用match 进行另一个查询,但除非有实际数据,否则仍然没有结果:

g.V().hasLabel("Person").has("name","bob").match(__.as("p").out("from").hasLabel("Country").as("c")).select("p", "c")

我正在对 Datastax Enterprise Graph 运行这些查询。

知道为什么它没有返回任何结果吗?

【问题讨论】:

    标签: gremlin tinkerpop datastax-enterprise-graph


    【解决方案1】:

    您得到的结果是预期的。如果没有“从”边,那么遍历器基本上会死掉并且不会继续前进。或许你可以考虑使用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 控制台中,以便更容易尝试更直接地回答您的具体问题。

    【讨论】:

    • 谢谢。下次将包含 Gremlin 脚本。
    猜你喜欢
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多