首页 > 解决方案 > 密码查询和AgensGraph

问题描述

以下查询仅返回 vlabel。

它也应该返回elabls吗?

match 
return distinct labels;

标签: cyphergraph-databasesagens-graph

解决方案


根据“列表函数”部分中的文档,该labels()函数只会返回 vlabels。

labels()
返回作为参数传递的顶点的 vlabel。将参数传递给标签函数时应该小心;当您使用 MATCH 子句找到与模式匹配的顶点、分配变量并将该变量作为参数传递时,顶点本身不能作为参数传递给标签函数,而必须始终作为变量传递。

如果您想要边缘/关系,文档说明使用该relationships()功能:

relationships()
返回作为参数传递的路径中存在的边。将参数传递给关系函数时应该小心;当您使用 MATCH 子句找到与模式匹配的路径、分配变量并将该变量作为参数传递时,路径本身不能作为参数传递给关系函数,但必须始终作为变量传递。与计数功能一起使用时,可以找到路径中的边数。

因此,要同时列出 vlabels 和 elabels,您需要类似以下查询(注意我们分配了p传递给relationships函数的结果路径):

MATCH p=(n)-[r]->(m)
RETURN DISTINCT labels(n), relationships(p), labels(m);

-- Example results
  labels  |               relationships               |  labels
----------+-------------------------------------------+----------
 ["part"] | [used_by[19.3][18.4,18.5]{"quantity": 1}] | ["part"]
 ["part"] | [used_by[19.4][18.5,18.6]{"quantity": 2}] | ["part"]
 ["part"] | [used_by[19.5][18.4,18.7]{"quantity": 1}] | ["part"]
(3 rows)

推荐阅读