我在嵌入 Java 的 NEO4J 中工作。假设有一个名为 NODE_abc 的节点,它有一些属性。我想选择节点,以便我可以使用 getProperty() 获取属性。
我想选择 NODE_abc 作为 mynode,以便我可以使用 mynode.getProperty() 来获取节点“NODE_abc”的属性。
节点“NODE_abc”的名称存储在一个变量中,比如 String str="NODE_abc"
我在嵌入 Java 的 NEO4J 中工作。假设有一个名为 NODE_abc 的节点,它有一些属性。我想选择节点,以便我可以使用 getProperty() 获取属性。
我想选择 NODE_abc 作为 mynode,以便我可以使用 mynode.getProperty() 来获取节点“NODE_abc”的属性。
节点“NODE_abc”的名称存储在一个变量中,比如 String str="NODE_abc"
我同意 tstorms 关于索引和执行密码查询的观点。但是,我要指出,节点标识符是短暂的。它们在有限的时间范围内有用,但随后会被回收。因此,一个节点在多次执行(或垃圾收集器运行后)不一定具有相同的标识符。
通常,在 Neo4J 中,如果您需要通过属性(而不是通过遍历)查询节点,则创建索引。例如,您可以创建一个名为“actors”的索引:
IndexManager index = graphDb.index();
Index<Node> actors = index.forNodes( "actors" );
如果索引不存在,此命令将创建它。否则,它返回现有索引。
但是,与 SQL 不同的是,在 Neo4J 中,您必须手动将节点添加到索引中:
Node reeves = graphDb.createNode();
reeves.setProperty( "name", "Keanu Reeves" );
actors.add( reeves, "name", reeves.getProperty( "name" ) );
然后,您可以查询与指定查询匹配的所有节点的索引(索引不保证唯一性):
IndexHits<Node> hits = actors.get( "name", "Keanu Reeves" );
Node reeves = hits.getSingle();
来源:https ://neo4j.com/docs/java-reference/current/indexing/#indexing-create
请注意,Neo4J 索引实际上并不从节点读取属性,您必须明确告诉它如何索引节点。您可以提供任意一条信息,用于索引未存储在节点上的信息,但我不建议这样做。
不确定您对名为“node_abc”的节点的含义。节点没有名称,但您可以通过 node.getId() 获取唯一的 id (=identifier)。所以我的猜测是你有一个带有 name 属性的节点。如果您在 name 属性上有索引,则可以通过索引(索引搜索)检索它。如果您有节点的标识符,您还可以通过 CYPHER 查询(执行 cypher 查询)检索它。