如何使用neo4j / Java查找特定节点

时间:2015-02-26 07:53:07

标签: java neo4j

我想通过neo4j的嵌入式java框架检索具有特定标签(或标签集)或属性(或属性集)的节点或节点列表。

看看这个问题:Select a node by name in NEO4J in Java

如果您想要搜索具有特定属性或标签的节点,则必须创建索引。但是,如果我编写自己的cypher命令来做同样的事情,我不必创建索引,我只是执行一个简单的查询:

Match (n:Entity:Person) return n;

我将简单地获得具有该标签组成的节点列表。如果没有每次都创建索引,这在嵌入式Java中是不是很容易完成?

1 个答案:

答案 0 :(得分:1)

如果您的节点上有标签,就像您的查询所示,那么GraphDatabaseService#getNodesByLabelAndProperty(Label label, String key, Object value)

就是一种简单的方法

所以是的,你可以做到。

但仍然建议索引。问问自己,如果没有索引,数据库将如何执行此操作?好吧,很可能它会按照你指定的方式提取所有节点的列表,然后它将遍历每一个节点,直到找到正确的节点。这将是非常缓慢和低效的。因此,如果您通常必须按某个属性键/值查找节点,那么您将需要一个索引。它不是首先使查找成为可能,而是使其有效。