1

pip在 OSX 上使用 Gremlin Python,最新可用的版本是在 AWS Neptune 上托管的数据库。
我想使用来自先前遍历的边缘的值。
示例优于 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不会崩溃,但不会between, gte, lte(正如between刚刚翻译成gteand lte

4

1 回答 1

4

我会尝试为您提出一个查询,但要开始,我假设您已经看过这个文档,它解释了每个谓词可以接受的类型:

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)))
于 2018-03-14T14:47:07.987 回答