gpt4 book ai didi

gremlin - 使用图遍历的一部分的属性作为其他部分的过滤器

转载 作者:行者123 更新时间:2023-12-04 10:10:25 25 4
gpt4 key购买 nike

我要下一个:

  • 图的遍历部分
  • 从第一次遍历中获取属性(property)
  • 将其作为过滤器放入其他遍历中
  • 获取过滤值

  • 当我在 Gremlin 控制台中运行 next 时:
    g = TinkerGraph.open().traversal()
    g.addV('a').property(id, 1).property('b',2)
    g.addV('a').property(id, 2).property('b',2).property('c',3)
    g.V(2).properties().key().limit(1).as('q').select('q')
    g.V(2).properties().key().limit(1).as('q').V(1).properties().key()
    g.V(2).properties().key().limit(1).as('q').V(1).properties().key().select('q')
    g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is('b'))
    g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is(select('q')))

    我得到:
    gremlin>     g = TinkerGraph.open().traversal()
    ==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
    gremlin> g.addV('a').property(id, 1).property('b',2)
    ==>v[1]
    gremlin> g.addV('a').property(id, 2).property('b',2).property('c',3)
    ==>v[2]
    gremlin> g.V(2).properties().key().limit(1).as('q').select('q')
    ==>b
    gremlin> g.V(2).properties().key().limit(1).as('q').V(1).properties().key()
    ==>b
    gremlin> g.V(2).properties().key().limit(1).as('q').V(1).properties().key().select('q')
    ==>b
    gremlin> g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is('b'))
    ==>b
    gremlin> g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is(select('q')))
    gremlin>

    所以我可以看到:
  • 我的第一个遍历路径获得了 'b' 的属性
  • 通过直接使用文字 'b' 进行选择有效
  • 使用投影按 'b' 过滤不起作用。

  • 所以问题是 - 在上述情况下,如何使用来自遍历的一部分的值作为其他遍历的过滤器?

    我的用例是我有 prototype顶点。我想抓取它的所有属性(可能是值),并找到所有与 prototype 相似的顶点.

    另一种选择是将查询存储在 prototype 的属性中,读取它并评估它以获得被它过滤的顶点。

    我知道我可以对字符串进行应用程序端连接,但我只想留在 Gremlin 的代码较少的部分,以获得适当的提供程序可移植性。

    更新:

    来自官方文档的示例:
    gremlin> firstYear = g.V().hasLabel('person').
    local(properties('location').values('startTime').min()).
    max().next()
    ==>2004
    gremlin> l = g.V().hasLabel('person').as('person').
    properties('location').or(has('endTime',gt(firstYear)),hasNot('endTime')).as('location').
    valueMap().as('times').
    select('person','location','times').by('name').by(value).by().toList()

    我如何使用 firstYear在控制台中没有变量,而是从查询中引用它?

    最佳答案

    我看到您的问题已在 Gremlin 用户列表中得到解答。 [1] 复制此处的答案,供可能搜索相同问题的其他人使用。

    你要找的是:

    g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(eq('q'))

    请参阅 Where 的文档Step 了解 where 的不同使用模式。

    [1] https://groups.google.com/forum/#!topic/gremlin-users/f1NfwUw9ZVI

    关于gremlin - 使用图遍历的一部分的属性作为其他部分的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61358412/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com