【问题标题】:Cypher Query and AgensGraph密码查询和AgensGraph
【发布时间】:2019-06-29 00:48:31
【问题描述】:

以下查询仅返回 vlabel。

它也应该返回elabls吗?

match 
return distinct labels;

【问题讨论】:

  • 在运行一些查询时(在 2.1.3 上)我发现 label() 函数适用于顶点和边,尽管它似乎将标签作为字符串返回,与 labels() 不同返回一个数组。

标签: cypher graph-databases agens-graph


【解决方案1】:

根据“列表函数”部分中的the docslabels() 函数将只返回 vlabel。

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

如果您想要边缘/关系,文档声明使用relationships() 函数:

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

因此,要同时列出 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    相关资源
    最近更新 更多