我需要编写一个单独的 Gremlin 查询,可以设置顶点的新属性值。所有属性名称都事先已知(在此示例中为:Type、Country、Status)。一些属性值可能为空 - 我事先不知道哪些为空。查询应适用于所有情况。例如,假设我当前有以下查询:
g.V(123).
property('Type',Type).
property('Country',Country).
property('Status',Status)
如果所有参数(类型、国家、状态)的值都不为空,则此查询正常工作。但是,如果例如国家为空,我会收到以下错误:
The AddPropertyStep does not have a provided value: AddPropertyStep({key=[Country]})
在这种情况下,我需要使用另一个查询来删除该属性(顺便问一下,有没有更好的方法来删除属性?):
g.V(123).
property('Type',Type).
property('Status',Status).
properties('Country').drop()
是否可能编写一个通用查询,以处理空值和非空值?我不能使用控制台或编程,只能执行单个Gremlin查询。
谢谢!
g.V(123).choose(constant(Type).count().is(0), optional(properties('Type').drop()), property('Type',Type)).choose(constant(Status).count().is(0)......
- Artursoptional()
可以在末尾链接更多步骤,因为drop()
行为类似于过滤器步骤并杀死所有遍历者。不过,使用sideEffect()
而不是optional()
可能更易读...至少这是我的偏好。 - stephen mallette