我使用neo4j为我的项目之一,有一个节点只有一个属性为name
,我想要使用ID获取该节点,它已经有一个ID,但是当我使用此代码Neo4J通过ID获取节点
MATCH (s:SKILLS{ID:65110}) return s
它没有返回,我的继承人节点
如果查询是错误的,那么我怎么查询它使用数字
我使用neo4j为我的项目之一,有一个节点只有一个属性为name
,我想要使用ID获取该节点,它已经有一个ID,但是当我使用此代码Neo4J通过ID获取节点
MATCH (s:SKILLS{ID:65110}) return s
它没有返回,我的继承人节点
如果查询是错误的,那么我怎么查询它使用数字
MATCH (s)
WHERE ID(s) = 65110
RETURN s
ID
function得到你的节点或关系的id。这与您创建的名为id
或ID
的任何属性都不同。
你可以说:
(n:User) where id(n) >=20 RETURN n
这将返回一个类型用户的所有节点与节点参考ID超过20
警告:以下答案不正确! START should only be used when accessing legacy indexes。这是disabled in Cypher 2.2 and up。
的Neo4j recommends using
WHERE ID(n) =
,并进一步指出,它will only require a single lookup (does not scan every node to find the matching ID)保持这个答案,防止别人犯同样的错误。
您可以使用WHERE ID(s) = 65110
,但这会检查每个节点的ID在你的数据库。
有一种更有效的方式来做到这一点:
START s=NODE(517) MATCH(s) RETURN s
有什么不同的方式来得到这样的数据(S:SomeLabel {ID:65110})? – DonkeyKong
@DonkeyKong不,因为你也可以添加id属性,这是id以外的东西。一个id属性可以有任何类型,而node或edge id是一个无符号整数,链接到Neo4J内部结构中的一个位置。 – pvoosten
标准免责声明:不要将内部Neo4j ID用于长期实体标识。出于性能的考虑,未来的Neo4j版本可能会将这些ID转移。创建您自己的唯一ID属性(理想情况下用'CONSTRAINT')来跟踪实体 –