gpt4 book ai didi

java - 在 neo4j 密码中检索确切的节点 ID

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:03 24 4
gpt4 key购买 nike

我使用 neo4j-jdbc 2.3.2 作为我的 java neo4j 客户端。当我执行以下密码查询时
match(p:Person) where p.id_number='761201948V' return p.id;
它将返回 P2547228 作为节点 ID。我觉得 id 与节点的其他属性相同,因为我可以在 where 子句中使用它。

但在这里我期待一个可以在这个查询中使用的整数 START p=node('node.id') return p; 这个 id 是一个内部的东西吗到 neo4j 数据库?有没有办法检索这个 ID?

从以下两个密码中,哪个是最有效的?(如果都引用相同的节点)

  1. 开始 p=node('2547223') 返回 p;
  2. match(p:Person) where p.id='P2547228' 返回 p;

最佳答案

为此,您必须使用 ID(x) 函数。请注意,ID(x)x.id 是完全不同的东西。前者返回由 Neo4j 本身管理的内部节点/关系 id。后者给出了由用户而非数据库本身管理的 id 属性。

另请注意,节点/关系 ID 始终是数字。

使用 START 已经很老套了,不应该再使用了(访问手动索引除外):

start p=node(2547228) return p 

这是一个等价的声明。它非常高效,因为它只需要在节点存储上做一个简单的查找操作:

match(p:Person) where id(p)=2547228 return p;

查找属性需要节点标签扫描或模式索引查找:

match(p:Person) where p.id=2547228 return p;

只需在语句前加上PROFILE 即可自行检查查询计划。

关于java - 在 neo4j 密码中检索确切的节点 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36492581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com