You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求告知Memgraph图数据库支持的全部变量展开类型

Memgraph支持的变量展开类型

Memgraph基于标准Cypher查询语言,在图遍历中支持多种实用的变量展开类型,以下是核心类型及示例:

1. 基础节点与关系变量展开

这是最常用的类型,遍历过程中将匹配到的节点、关系直接绑定到指定变量,后续可直接引用这些变量做计算或过滤。

MATCH (u:User)-[f:FRIENDS_WITH]->(v:User)
RETURN u.name, f.since, v.name;

这里u(起始用户节点)、f(好友关系)、v(目标用户节点)都是展开的变量,存储了遍历到的对应图元素。

2. 路径变量展开

通过可变长度路径语法*将整条遍历路径绑定到变量,方便后续操作路径内的所有节点或关系。支持指定路径长度范围(如1..3表示1到3步,*表示任意长度)。

MATCH p=(u:User)-[*1..3]->(v:User)
RETURN nodes(p), relationships(p);

变量p存储了从u到v的完整路径,可通过nodes(p)提取路径上的所有节点,relationships(p)提取所有关系。

3. 可选变量展开

使用OPTIONAL MATCH子句处理可能不存在的路径,当没有匹配到对应模式时,展开的变量会被设为NULL,避免过滤掉原本存在的节点。

MATCH (u:User {name: "Alice"})
OPTIONAL MATCH (u)-[:FOLLOWS]->(v:User)
RETURN u.name, COALESCE(v.name, "No following");

如果Alice没有关注任何用户,v变量会是NULL,通过COALESCE可以返回默认值。

4. 带过滤条件的变量展开

在匹配过程中通过WHERE子句对展开的变量添加过滤规则,只保留符合条件的图元素。

MATCH (u:User)-[f:FRIENDS_WITH]->(v:User)
WHERE u.age > 30 AND f.since > date("2020-01-01")
RETURN u.name, v.name;

这里仅展开年龄大于30的用户,以及2020年之后建立的好友关系对应的节点和关系。

5. 多分支并行变量展开

在单个MATCH中指定多个模式,并行展开不同路径的变量,适用于同时获取节点的多种关联关系。

MATCH (u:User {name: "Bob"})-[f:FRIENDS_WITH]->(v), (u)-[w:WORKS_WITH]->(x)
RETURN v.name AS friend, x.name AS colleague;

同时展开v(Bob的好友)和x(Bob的同事)两个变量,一次性获取两种关联数据。

6. 匿名变量展开

当不需要引用某个图元素时,用_作为匿名变量,简化查询语句,避免不必要的命名。

MATCH (u:User)-[:FRIENDS_WITH]->(_)
RETURN u.name, count(*) AS friend_count;

这里只需要统计用户的好友数量,不需要关注好友节点的具体信息,所以用匿名变量代替命名变量。

内容的提问来源于stack exchange,提问作者GrandMel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:40:19