match (v1: a
)-[e: b
|:c
]-(v2) return v1, e, v2 limit 3
这个语句中的edge type b和edge type c是或的关系,我想要且的关系应该怎样写这个sql?套用neo4j的语句查询没查询结果出来
nebula> MATCH (v:player{name:"Tim Duncan"})-[e:follow|:serve]->(v2) \
RETURN e;
+---------------------------------------------------------------------------+
| e |
+---------------------------------------------------------------------------+
| [:follow "player100"->"player101" @0 {degree: 95}] |
| [:follow "player100"->"player125" @0 {degree: 95}] |
| [:serve "player100"->"team204" @0 {end_year: 2016, start_year: 1997}] |
+---------------------------------------------------------------------------+
我们的数据模型没有这中查询,一条边有且只有一种类型。
这里是follow关系或serve关系,我要的是既有follow关系又有serve关系的节点
我查的是点,这个是正常的需求吧?在风控中常用
sorry ,看错了,边类型是 AND 的话,neo4j 的一样表达应该是可以的,只是有的查询是依赖索引存在的。
能不能回复一个示例?
MATCH (m)-[e0:follow]->(n),(m)-[e1:serve]->(n) WHERE id(m)=="player100"
RETURN n,e0,e1
(root@nebula) [basketballplayer]> insert edge follow(degree) values "player100"->"team204":(95);
Execution succeeded (time spent 6607/16020 us)
(root@nebula) [basketballplayer]> MATCH (m)-[e0:follow]->(n),(m)-[e1:serve]->(n) WHERE id(m)=="player100" RETURN n,e0,e1
+----------------------------------+--------------------------------------------------+-----------------------------------------------------------------------+
| n | e0 | e1 |
+----------------------------------+--------------------------------------------------+-----------------------------------------------------------------------+
| ("team204" :team{name: "Spurs"}) | [:follow "player100"->"team204" @0 {degree: 95}] | [:serve "player100"->"team204" @0 {end_year: 2016, start_year: 1997}] |
+----------------------------------+--------------------------------------------------+———————————————————————————————————+
1 个赞
我也是这样写的,但是没有数据。但是它是有这样的数据的,有什么和我们写代码那样debug查看原因在哪里的方法吗?
具体的查询是?
涉及索引么(涉及的话,如果是后创建索引有没有 rebuild?)?
可以 profile 一下(profile match xxxxxx return …)
我的查询是这样的:
MATCH (m:team)-[e0:follow]->(n),(m:team)-[e1:serve]->(n) RETURN n,e0,e1
tag是建过索引,而且rebuild过。
profile这个功能不友好,我在console输入,直接被刷屏了,没法分析了。怎么可以直接在console输出重定向吗?
❯ echo 'USE basketballplayer;\nPROFILE MATCH (m)-[e0:follow]->(n),(m)-[e1:serve]->(n) WHERE id(m)=="player100" RETURN n,e0,e1;' > profile0.ngql
❯ cat profile0.ngql
USE basketballplayer;
PROFILE MATCH (m)-[e0:follow]->(n),(m)-[e1:serve]->(n) WHERE id(m)=="player100" RETURN n,e0,e1;
❯ nebula-console-linux-amd64-v3.0.0 -addr 10.1.1.168 -port 9669 -user root -p nebula -f profile0.ngql > profile0.log
❯ head profile0.log -n 20
(root@nebula) [(none)]> USE basketballplayer;
Execution succeeded (time spent 1207/1677 us)
Mon, 24 Oct 2022 09:56:46 UTC
(root@nebula) [basketballplayer]> PROFILE MATCH (m)-[e0:follow]->(n),(m)-[e1:serve]->(n) WHERE id(m)=="player100" RETURN n,e0,e1;
+----------------------------------+--------------------------------------------------+-----------------------------------------------------------------------+
| n | e0 | e1 |
+----------------------------------+--------------------------------------------------+-----------------------------------------------------------------------+
| ("team204" :team{name: "Spurs"}) | [:follow "player100"->"team204" @0 {degree: 95}] | [:serve "player100"->"team204" @0 {end_year: 2016, start_year: 1997}] |
+----------------------------------+--------------------------------------------------+-----------------------------------------------------------------------+
Got 1 rows (time spent 8638/9799 us)
Execution Plan (optimize time 294 us)
-----+----------------+--------------+--------------------------------------------------------------------------------------------------------+----------------------------------
| id | name | dependencies | profiling data | operator info |
-----+----------------+--------------+--------------------------------------------------------------------------------------------------------+----------------------------------
| 13 | Project | 12 | ver: 0, rows: 1, execTime: 35us, totalTime: 37us | outputVar: { |
| | | | | "colNames": [ |
,3q
哈喽,如果某个回复解决了你的问题,请将这条回复勾选为【解决方案】哈,可以帮助遇到相似问题的用户快速的找到答案呢~
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。