INSERT EDGE IF NOT EXISTS插入一条数据,结果却是2条?

JAVA客户端执行边的插入语句,每次都会插入完全相同的2条边,这是为什么呢?


直接控制台插入,也会有2条结果。

哦,四元组是完全一样的,但是结果依然是两条,这个不是我一开始想象的, 我问问其他同学。

额,我发现了,查询语句没有带入方向。所以数据其实只有一条,但是查询出了2条。

2 个赞

哈哈,对:sob::+1:t2:

我试了下,感觉是个 bug,不应该返回两个一样的边,实际上就一条边的。

1 个赞

原来如此,我傻了,以为是期待的结果。:+1:t2:

不好意思,是我理解错了,更好的理解这个两条边的结果。

(root@nebula) [s1]> match (v1) - [e:e1] -(v2) return v1,e,v2
+-----------+------------------+-----------+
| v1        | e                | v2        |
+-----------+------------------+-----------+
| (2 :t1{}) | [:e1 1->2 @0 {}] | (1 :t1{}) |
| (1 :t1{}) | [:e1 1->2 @0 {}] | (2 :t1{}) |
+-----------+------------------+-----------+
Got 2 rows (time spent 5185/17529 us)

match 匹配的时候,因为没有指定方向,v1 是 2 的点也是一条有效的记录。
为了防止数据有歧义,可以手动 distinct

(root@nebula) [s1]> match (v1) - [e:e1] -(v2) return distinct(e)
+------------------+
| e                |
+------------------+
| [:e1 1->2 @0 {}] |
+------------------+
Got 1 rows (time spent 5591/13424 us)

Tue, 30 Nov 2021 12:00:56 CST
1 个赞

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。