如何使用Cypher返回节点的所有属性?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Cypher返回节点的所有属性?相关的知识,希望对你有一定的参考价值。

我知道可以使用通配符(*)符号返回Cypher查询中的所有引用,例如:

MATCH p:Product WHERE p.price='1950' RETURN *;

  ==> +----------------------------------------------------------------+
  ==> | p                                                              |
  ==> +----------------------------------------------------------------+
  ==> | Node[686]{title:"Giorgio Armani Briefcase",price:"1950",...    |
  ==> +----------------------------------------------------------------+

但是,结果是一行具有名为“p”的单个节点“列”,可以从中访问属性。但是,我希望结果集“行”将属性名称设置为“列”。就像是:

MATCH p:Product WHERE p.price='1950' RETURN p.*;

  ==> +-------------------------------------------+
  ==> | title | price | ...                       |
  ==> +-------------------------------------------+
  ==> | "Giorgio Armani Briefcase" | "1950" | ... |
  ==> +-------------------------------------------+

该特定查询无效,但有没有办法实现相同的结果(没有明确列出所有属性,如p.title,p.price,p ...)?

答案

你还不能在Cypher中做到这一点。如果您想要它,我认为这将是一个很好的功能。

编辑(感谢评论指出):您现在可以从2.2开始执行此操作:

MATCH (p:Product) WHERE p.price='1950' RETURN keys(p);
另一答案

在最新版本的cypher中,properties(n)将返回节点的所有键和属性。似乎只适用于单个节点。

我希望这有助于人们。

另一答案

只是为了扩大获取密钥:

MATCH (p:product) WITH DISTINCT keys(p) AS keys
UNWIND keys AS keyslisting WITH DISTINCT keyslisting AS allfields
RETURN allfields;
另一答案

您可以在cypher查询中返回n,它将返回节点的所有键和属性。例如:MATCH (n:People) n 这将返回 N: { "Date_of_Birth": "1981-04-23 00:00:00", "Employee_Last_Name": "Aaaa", "Employee_First_Name": "Baaa", "Age": 36, "Employee_Status": "Active" }

另一答案

您可以使用'as'子句并标识每个属性以及您希望列命名的内容。您必须确定要单独返回的每个属性。

例如:

MATCH p.product where WHERE p.price='1950' RETURN p.price as price, p.title as title, p.whatever, as anythingYouWant
另一答案

我是cypher的新手,但似乎这会返回特定类型节点的所有键:

MATCH (p:product) RETURN keys(p)

适用于Neo4J 3.0。

以上是关于如何使用Cypher返回节点的所有属性?的主要内容,如果未能解决你的问题,请参考以下文章

Cypher索引约束

使用cypher返回多个关系权重

如何将值推送到 Cypher 中的属性数组?

Neo4j 第十一篇:Cypher函数

Neo4j Cypher:检查路径中不连续节点的属性

Cypher where子句因多条路径而失败