【发布时间】:2021-05-03 00:11:52
【问题描述】:
我正在尝试应用 Element Existence recipe 来仅插入一个被认为是“有效”(而不是“过期”)的边缘:
def to = __.V(member).hasLabel('Member')
gts.V(group).hasLabel('Group')
.coalesce(
__.outE('Includes').hasNot('ttl.end').where(__.inV().is(P.eq(to))),
__.addE('Includes').to(to).property('ttl.start', timestamp)
)
.next()
我的期望是合并将选择没有ttl.end 属性的现有边并入射到相同的to 顶点,或者插入新边。但是,无论如何总是会插入一条新边。我将此解释为表明第一个 subtraversal 与现有的活动边缘不匹配,但我不知道为什么。谓词 P.eq 是否适用于 Traversal<?, Vertex> 参数?如果不是,那么“边缘在顶点to 的终点位置”的正确说法是什么?
个人资料(我注意到IsStep 没有遍历器,我将其解释为不匹配):
Step Count Traversers Time (ms) % Dur
=============================================================================================================
TinkerGraphStep(vertex,[08f8c62d-5429-40e6-84b7... 1 1 0.135 10.93
CoalesceStep([[VertexStep(OUT,[Includes],edge),... 1 1 0.781 63.17
VertexStep(OUT,[Includes],edge) 2 2 0.025
NotStep([PropertiesStep([ttl.end],value), Pro... 1 1 0.127
PropertiesStep([ttl.end],value) 0.033
TraversalFilterStep([EdgeVertexStep(IN), Prof... 0.144
EdgeVertexStep(IN) 1 1 0.014
IsStep(eq([TinkerGraphStep(vertex,[d9b69296... 0.018
AddEdgeStep({ttl.start=[Thu Jan 28 21:27:52 C... 1 1 0.220
TinkerGraphStep(vertex,[d9b69296-333e-4e54-... 1 1 0.120
【问题讨论】:
标签: java groovy gremlin tinkerpop3