代码之家  ›  专栏  ›  技术社区  ›  VivienG

使用上一条边的值

  •  1
  • VivienG  · 技术社区  · 6 年前

    我正在使用Gremlin Python,最新版本 pip ,位于OSX上,用于AWS Neptune上托管的DB。
    我想使用以前遍历的边的值。
    举例比10行解释要好。

    g.V(2).outE().values('stop_timestamp').store('stop_ts').inV().outE().where(has('start_ts', between('stop_ts', end_ts)))
    

    我想使用 stop_ts 值(只是一个 Int )并在 between 陈述
    目前我只有以下错误:

    gremlin_python.driver.protocol.GremlinServerError: 597: Exception processing a script on request
    

    我认为不可能使用以前遍历的边的值,这将是一个遗憾,但我需要确认。

    编辑:看来 neq & eq 不会崩溃但不会 之间 ,则, gte ,则, lte (作为 之间 刚刚翻译为 gte公司 lte公司 )

    1 回复  |  直到 6 年前
        1
  •  4
  •   Kelvin Lawrence    6 年前

    我将尝试为您提出一个查询,但为了开始,我假设您已经看到了此文档,其中解释了每个谓词可以接受的类型:

    http://tinkerpop.apache.org/docs/current/reference/#a-note-on-predicates

    一些可能也会有所帮助的事情。以下模式是有效的,我认为可以应用到您的案例中。我在Gremlin控制台上测试了它们。您可能需要调整一些东西,以使它们在Gremlin Python中工作,但这些Gremlin模式都是比较东西的有效方法。

    // Compares two elements with a common property
    // Assumes 'a' and 'b' are references to earlier parts of the query.
    where('a',gt('b')).by('timestamp')
    
    // References an external variable
    // Assumes timestamp is a property of the prior traversal step
    where(values('timestamp').is(gt(x)))
    
    // If you need to select a previously labeled step and compare
    // you can do this
    where(select('timestamp').is(gt(x)))