有没有办法返回特定标签节点的所有属性键的不同列表

时间:2018-01-19 19:04:19

标签: neo4j properties label cypher distinct

我需要获得在图表中的一组节点上创建的所有属性的明确列表。我知道在搜索中执行或查找的所有内容都将返回此类标签的所有节点及其各自不同属性的列表。例如:

CREATE (p:Person { name: 'John', age: 40, address: '100 main st' });
CREATE (a:Animal { name: 'Spot', type: 'dog', age: 2, diet: 'dry food'});
CREATE (a:Animal { name: 'Goldie', type: 'fish', family: 'carp' });

我希望得到一个独特的列表,只返回所有动物的所有属性键。

[ name, type, age, diet, family ]

做这样的事情:

MATCH (a:Animal) RETURN distinct keys(a);

返回每个节点的列表:

[name, type, age, diet]
[name, type, family]

我只想要一个标签类型的所有属性列表。它还需要能够扩展到数百万个节点。

1 个答案:

答案 0 :(得分:2)

只需要解开密钥集合并重新组合它们。

MATCH (a:Animal) 
UNWIND keys(a) AS key
RETURN collect(distinct key)

或者,如果您希望按字母顺序排序,则可以执行此类操作

MATCH (a:Animal) 
UNWIND keys(a) AS key
WITH DISTINCT key
ORDER by key
RETURN collect(key)

或者您可以返回每个键的计数

MATCH (a:Animal) 
UNWIND keys(a) AS key
RETURN key, count(*) AS num
ORDER by num DESC, key