neo4j:CYPHER查询节点

时间:2018-06-05 15:41:51

标签: neo4j cypher

我们正在评估Neo4J的未来项目。目前正在尝试学习Cypher及其功能。但到目前为止,我认为应该非常简单的一件事是我。我希望能够查看任何给定节点的所有属性及其值。在SQL中类似于:

select * from TableX where ID = 12345;

我查看了最新的Neo4J文档以及众多谷歌搜索,但到目前为止我还是空着。我确实找到了keys()函数,它将在字符串列表中返回属性名称,但这在最好情况下是非常有用的。我想要的是一个查询,它将返回道具名称和相应的值,如:

name     :  "Lebron"
city     :  "Cleveland"
college  :  "St. Vincent–St. Mary High School"

1 个答案:

答案 0 :(得分:1)

您可能想重读Neo4j文档。

返回节点本身将包含节点的属性映射,这通常是获取节点的所有属性(键和值)的方式。

MATCH (n)
WHERE id(n) = 12345
RETURN n

如果您明确只需要属性但没有与节点本身相关的元数据,则返回properties(n)(假设n是节点变量)将返回节点的属性。

MATCH (n)
WHERE id(n) = 12345
RETURN properties(n) as props

关于列(变量)如何工作,这些总是显式的,因此您无法动态获取与节点属性对应的列。您将需要使用上述方法,其中变量对应于节点(您可以通过结构获取属性映射)或属性映射。

这种方法与SQL中的select *之间的主要区别在于Neo4j没有表模式,因此您可以在相同类型的节点上使用您想要的任何属性,并且这些属性可以在相同类型的节点之间有所不同,因此没有共同的结构可供参考,它将为给定标签的节点提供属性(您需要扫描该标签的所有节点并累积不同的属性才能这样做)。