我们正在评估Neo4J的未来项目。目前正在尝试学习Cypher及其功能。但到目前为止,我认为应该非常简单的一件事是我。我希望能够查看任何给定节点的所有属性及其值。在SQL中类似于:
select * from TableX where ID = 12345;
我查看了最新的Neo4J文档以及众多谷歌搜索,但到目前为止我还是空着。我确实找到了keys()
函数,它将在字符串列表中返回属性名称,但这在最好情况下是非常有用的。我想要的是一个查询,它将返回道具名称和相应的值,如:
name : "Lebron"
city : "Cleveland"
college : "St. Vincent–St. Mary High School"
答案 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没有表模式,因此您可以在相同类型的节点上使用您想要的任何属性,并且这些属性可以在相同类型的节点之间有所不同,因此没有共同的结构可供参考,它将为给定标签的节点提供属性(您需要扫描该标签的所有节点并累积不同的属性才能这样做)。