match 查询同时包含某几种的节点

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}]     |
+---------------------------------------------------------------------------+

参考 MATCH - NebulaGraph Database 手册

我们的数据模型没有这中查询,一条边有且只有一种类型。

这里是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": [                 |

:ok_hand:,3q

哈喽,如果某个回复解决了你的问题,请将这条回复勾选为【解决方案】哈,可以帮助遇到相似问题的用户快速的找到答案呢~ :heart:

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