查找满足指向三条边tag的起始点

提问参考模版:

  • nebula 版本:2.0.1
  • 部署方式(分布式 / 单机 / Docker / DBaaS):分布式
  • 是否为线上版本: N

比如有3个tag:
tag1:有id、name;
tag2:有sex、sex_dsc;
tag3:有type、type_dsc;
tag4:有hoppy、hoppy_dsc;
2个edge:
edge1:id->sex;
edge2:id->type;
edge3:id->hoppy;
这种能不能通过match语句找出同时满足sex_dsc=‘男’,type_dsc=’1’,hoppy='3’的tag1的id?

对 tag2(sex_dsc) 或者t ag3(type_dsc) 或者 tag4(hoppy_dsc) 建立索引
match(v) where v.type_dsc == ‘1’ and v.sex_dsc == ‘男’ and v.hoppy == ‘3’ return v.id

根据您提供的信息和问题,我们可以用 NebulaGraph 的 MATCH 语句来查找满足特定条件的 tag1 的 id。这里是如何设置这个查询的:

背景:

您有标签 tag1, tag2, tag3, tag4,每个标签有不同的属性。

您有从 tag1.id 指向 tag2, tag3, tag4 属性的边。

查询:

考虑到您要找出满足以下条件的 tag1.id:

tag2.sex_dsc = ‘男’

tag3.type_dsc = ‘1’

tag4.hoppy_dsc = ‘3’

您可以构建一个 MATCH 语句来遍历这些连接。以下是查询语句:


MATCH (v1:tag1)-[:edge1]->(v2:tag2),

(v1)-[:edge2]->(v3:tag3),

(v1)-[:edge3]->(v4:tag4)

WHERE v2.sex_dsc == '男'

AND v3.type_dsc == '1'

AND v4.hoppy_dsc == '3'

RETURN v1.id;

解释:

MATCH 子句:这一部分匹配图形模式,其中 v1(来自 tag1)通过指定的边连接到 v2(来自 tag2)、v3(来自 tag3)和 v4(来自 tag4)。

WHERE 子句:在这里,您为通过这些边连接的顶点指定了必须满足的条件。每个条件检查了各自标签的特定属性。

RETURN 子句:最后,返回满足所有条件的 tag1 的 id。