所有节点上的密码索引通用 属性

cypher indexing common property on all nodes

根据新的索引规则,auto_index 将在未来消失,预计将使用 cypher 创建索引。根据这种新方法,要索引节点 属性,您必须提供节点标签。

我在所有类型的节点标签上都有一个 'nodeId' 属性 - 用户、员工、银行、汽车等。 我过去常常自动-index this 属性 检索任何类型的节点,如果它的 nodeId 是已知的。请注意,由于自动索引不需要我提供节点标签,因此我可以做我所做的事情。

ReadableIndex<Node> readableIndex = this.graphDatabaseService.index().getNodeAutoIndexer().getAutoIndex();
readableIndex.get("nodeId", "0").getSingle();

但是对于新样式,我必须为每个节点标签在 nodeId 属性 上创建索引。所以我必须这样做:

create index on :User(nodeId)
create index on :Employee(nodeId)
...

此外,我的方法 getByNodeId(String nodeId) 现在没用了,因为我没有传递任何节点标签,这个密码查询恕我直言将无法再使用索引。

match (node) where node.nodeId = {nodeId} return node;

由于我的 getByNodeId() 方法的全部要点是在所有节点上通用,所以我不能给这个密码查询一个节点标签。那我在这里应该怎么办。我的 2 个问题是:

注:

一个节点可以有多个标签。

因此,如果您让所有节点共享一个公共标签,比如 Base(除了它们当前拥有的任何标签),您可以只拥有一个覆盖所有节点的索引:

CREATE INDEX ON :Base(nodeId)