0

您能否帮助我了解是否有任何选项可以让我们跳过 gremlin 中的可选选项,

场景是,我们正在遍历一个图并且有一个可选语句

根据请求中的查询参数,我将有一个可选的遍历路径,如果没有,则没有可选的路径

例如,

if query_parameter:
 path=has('labeltest').inE().outV()

g.V('test').optional(path)

由于可选路径适用于 query_parameter 可用条件,因此如果查询参数不可用,这将失败并且不返回任何结果。我们不喜欢通过 if 和 else 条件重复 gv() 上的代码。告诉可选选项不做任何事情或虚拟选项返回先前路径的任何想法。感谢您的想法,因为我是新手,在此先感谢您

问候哈里

4

2 回答 2

2

在您不想发生任何事情的情况下,您可以将path变量设置为identity(). 效果如下:

gremlin> g.V('3').optional(identity())
==>v[3]

具体来说,在 Python 中,您可以这样做:

>>> p=__.identity()
>>> g.V('3').optional(p).next()
v[3]
于 2020-11-25T15:35:06.013 回答
1

如果您使用Gremlin 语言变体 (GLV)从 python 执行此操作,那么您只能在需要时添加查询的可选部分。GLV 是惰性求值的,因此您可以有条件地在代码中构造它们。它们只会在您添加终端步骤时执行(例如toList())。这意味着您可以像这样构建遍历:

t=g.V('test')
if query_parameter:
  t=t.has('labeltest').inE().outV()
res=t.toList()

使用此代码,遍历的可选路径部分将仅在query_parameter为 True 时执行,否则它将仅返回test顶点。

于 2020-11-25T16:19:03.597 回答