Sack Sum By 操作导致 AWS Neptune 错误

Sack Sum By operation causes AWS Neptune error

前期问题:AWS Neptune 在使用 .sack(__.sum).by() 操作时似乎出现故障。

背景:

条件

鉴于上述情况,此查询将执行:

return await g.withSack(120)
 .V(fromPortId)
 .repeat(
     (__.outE().hasLabel('VOYAGES_TO'))
     .inV()
     .simplePath()
 )
 .until(
     __.has('code', toPortId).and()
     .sack().is(lte(travelTimeBudget))
 )
 .order().by(__.sack(), __.desc)
 .local(
     __.union(__.path().by('code')
     .by('duration'), __.sack()).fold()
 )
 .local(
     __.unfold().unfold().fold()
 )
 .toList()
 .then(data => {
     return data
 })
 .catch(error => {
     console.log('ERROR', error);
 });

... 但是这个查询不会:

return await g.withSack(120)
 .V(fromPortId)
 .repeat(
     (__.outE().hasLabel('VOYAGES_TO').sack(__.sum).by('duration'))
     .sack(__.sum).by(__.constant(45))
     .inV()
     .simplePath()
 )
 .until(
     __.has('code', toPortId).and()
     .sack().is(lte(travelTimeBudget))
 )
 .order().by(__.sack(), __.desc)
 .local(
     __.union(__.path().by('code')
     .by('duration'), __.sack()).fold()
 )
 .local(
     __.unfold().unfold().fold()
 )
 .toList()
 .then(data => {
     return data
 })
 .catch(error => {
     console.log('ERROR', error);
 });

...两者之间的唯一区别是 .sack(__.sum).by() 运算符的存在。

有什么想法或建议吗?

您不应在 sack 步骤中使用 __.sum,因为那是实际的 sum() 步骤(来自匿名遍历 __.)而不是 Operator.sum 枚举。理想情况下,您应该将它们包含在代码的顶部,或者使用:

     (__.outE().hasLabel('VOYAGES_TO').sack(operator.sum).by('duration'))
     .sack(operator.sum).by(__.constant(45))

此代码块周围的附加括号也不需要。