UPSERT EDGE无法判断边的属性是否存在

需要累积计算出俩个节点发生关系的次数和金额总值或者数组,所以使用UPSERT EDGE 在set值的时候,例如:边属性a=边E.a + 1 进行操作。

实测结果:
1、如果使用insert edge后,赋予了属性值,那么使用 边属性a=边E.a + 1 有效。
2、如果直接使用UPSERT EDGE + 边属性a=边E.a + 1 无效。查询结果为:


image

用 2 的方式,出现这种情况是因为,upsert 的边不存在,那么 E.a 自然就不存在,这个时候 storage 用的是默认值或者 null,你的应该是没有默认值,所以用了 null + 1, 所以出来的也是 null

我重新创建了边的属性结构, int default 0。重新使用UPSERT EDGE ,测试成功,怀疑是不是 UPSERT EDGE 执行里俩步操作,第一步新增,第二步修改。。源文档:UPSERT EDGE语句结合UPDATE和INSERT,如果边存在,会更新边的属性;如果边不存在,会插入新的边。

是的,你上面的情况就是会用默认值或者null插入新的边,由于前面没有设置默认值,但是允许为null,所以插入的值都是null。

2 个赞