【问题标题】:Graph-Traversal: How do I query for "friends and friends of friends" using GremlinGraph-Traversal:如何使用 Gremlin 查询“朋友和朋友的朋友”
【发布时间】:2012-02-28 16:53:09
【问题描述】:

在我的图形数据库中,我有分支和叶子。树枝可以“包含”叶子,树枝可以“包含”树枝。

如何使用 Gremlin 找到给定分支的所有叶子,与它直接或间接相关?

我让它在 Cypher 中工作:

START v=node(1) MATCH v-[:contains*1..2]->i RETURN v,i

*1..2 的意思是“朋友和朋友的朋友”。

我认为LoopV 可能是前进的方向,但我只收到了Exception

从 JsonReader 读取 JArray 时出错。当前 JsonReader 项不是数组:String

【问题讨论】:

    标签: database graph-databases gremlin


    【解决方案1】:

    您可以在 Gremlin 1.4+ 中执行以下操作。

    g.v(1).out('contains').loop(1){true}{it.out('contains').count() == 0}
    

    这说:

    1. 从 id 为 1 的顶点开始
    2. 取出传出的“包含”边。
    3. 遍历 out('contains') 部分。
    4. “无限”循环(确保您的树中没有循环)
    5. 只发射那些没有更多传出“包含”边的接触顶点。 (即叶子)

    但是,看看您想从 Cypher 获得什么,您似乎只需要 2 个步骤。因此,要做到这一点,只需这样做:

    g.v(1).out('contains').loop(1){it.loops < 3}
    

    也许我误解了你的问题——不管怎样,这应该足够你玩了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 2015-10-21
      • 1970-01-01
      • 2011-03-26
      相关资源
      最近更新 更多