From 7e4477886656e72f8daa6716966644d3e1dcf042 Mon Sep 17 00:00:00 2001 From: "abby.huang" <78209557+abby-cyber@users.noreply.github.com> Date: Mon, 30 Jan 2023 14:01:45 +0800 Subject: [PATCH] support-allShortestPaths (#2527) --- .../7.general-query-statements/2.match.md | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md b/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md index 8e8d90101cb..0b552a5a2bf 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md @@ -508,10 +508,10 @@ nebula> MATCH (v:player{name:"Tim Duncan"}) -[*0]-> (v2) \ 如果未设置 `maxHop` 可能会导致 graph 服务 OOM,请谨慎执行该命令。 -|参数|说明| -|:---|:---| -|`minHop`|可选项。表示路径的最小长度。`minHop`必须是一个非负整数,默认值为 1。| -|`maxHop`|可选项。表示路径的最大长度。`maxHop`必须是一个非负整数,默认值为无穷大。| +| 参数 | 说明 | +| :------- | :----------------------------------------------------------------------- | +| `minHop` | 可选项。表示路径的最小长度。`minHop`必须是一个非负整数,默认值为 1。 | +| `maxHop` | 可选项。表示路径的最大长度。`maxHop`必须是一个非负整数,默认值为无穷大。 | 如果未指定`minHop`和`maxHop`,仅设置了`:*`,则二者都应用默认值,即`minHop`为 1,`maxHop`为无穷大。 @@ -613,18 +613,33 @@ nebula> MATCH (v1:player{name:"Tim Duncan"}), (v2:team{name:"Spurs"}) \ ### 匹配最短路径 -用户可以用 `shortestPath` 表示模式中的路径。 +用户可以使用`allShortestPaths`返回起始点到目标点的所有最短路径。 ``` -nebula> MATCH p = shortestPath((a:player)-[e:follow*..2]-(b:player))\ - WHERE a.player.age > 45 AND b.player.age < 30 \ +nebula> MATCH p = allShortestPaths((a:player{name:"Tim Duncan"})-[e*..5]-(b:player{name:"Tony Parker"})) \ RETURN p; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| p | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| <("player144" :player{age: 47, name: "Shaquille O'Neal"})-[:follow@0 {degree: 80}]->("player100" :player{age: 42, name: "Tim Duncan"})<-[:follow@0 {degree: 99}]-("player113" :player{age: 29, name: "Dejounte Murray"})> | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++------------------------------------------------------------------------------------------------------------------------------------+ +| p | ++------------------------------------------------------------------------------------------------------------------------------------+ +| <("player100" :player{age: 42, name: "Tim Duncan"})<-[:follow@0 {degree: 95}]-("player101" :player{age: 36, name: "Tony Parker"})> | +| <("player100" :player{age: 42, name: "Tim Duncan"})-[:follow@0 {degree: 95}]->("player101" :player{age: 36, name: "Tony Parker"})> | ++------------------------------------------------------------------------------------------------------------------------------------+ +``` + + +用户可以使用`shortestPath`返回起始点到目标点的任意一条最短路径。 + ``` +nebula> MATCH p = shortestPath((a:player{name:"Tim Duncan"})-[e*..5]-(b:player{name:"Tony Parker"})) \ + RETURN p; ++------------------------------------------------------------------------------------------------------------------------------------+ +| p | ++------------------------------------------------------------------------------------------------------------------------------------+ +| <("player100" :player{age: 42, name: "Tim Duncan"})<-[:follow@0 {degree: 95}]-("player101" :player{age: 36, name: "Tony Parker"})> | ++------------------------------------------------------------------------------------------------------------------------------------+ + +``` + ## 多MATCH检索 不同的模式有不同的筛选条件时,可以使用多`MATCH`,会返回模式完全匹配的行。