为 Cypher 中的所有节点创建一个 属性 索引
Create a property index for all nodes in Cypher
我的数据库有 1 条规则。一切都必须有一个 'id'。由于这是我的主键字段,所以我想对其进行索引,但似乎创建索引的唯一方法是指定标签。
所以有了这个数据集
CREATE (:TEST1{id:"<uuid>"}),
(:RAWR{id:"<uuid>"}),
(:FOO:BAR{id:"<uuid>"}),
({id:"<uuid>"})
我想使用索引通过其 UUID 查找未标记的节点。
这在 Cypher 中可行吗?还是我唯一的选择是将 'node' 标签注入到进入数据库的所有内容中? (创建标签然后将其分配给所有内容感觉不对。劫持所有创建请求以添加该附加标签感觉就像我在自找麻烦。)
一个节点可以有多个标签。因此,除了您现有的标签之外,您还可以为所有节点分配一个公共标签,然后使用该公共标签和 id
.
创建索引
但是,由于您希望 id
值是全局唯一的,因此您应该创建 uniqueness constraint(自动创建 uniqueness constraint 而不是创建 index作为副作用的索引)。那会告诉 neo4j 为你强制执行 id
唯一性。
我的数据库有 1 条规则。一切都必须有一个 'id'。由于这是我的主键字段,所以我想对其进行索引,但似乎创建索引的唯一方法是指定标签。
所以有了这个数据集
CREATE (:TEST1{id:"<uuid>"}),
(:RAWR{id:"<uuid>"}),
(:FOO:BAR{id:"<uuid>"}),
({id:"<uuid>"})
我想使用索引通过其 UUID 查找未标记的节点。
这在 Cypher 中可行吗?还是我唯一的选择是将 'node' 标签注入到进入数据库的所有内容中? (创建标签然后将其分配给所有内容感觉不对。劫持所有创建请求以添加该附加标签感觉就像我在自找麻烦。)
一个节点可以有多个标签。因此,除了您现有的标签之外,您还可以为所有节点分配一个公共标签,然后使用该公共标签和 id
.
但是,由于您希望 id
值是全局唯一的,因此您应该创建 uniqueness constraint(自动创建 uniqueness constraint 而不是创建 index作为副作用的索引)。那会告诉 neo4j 为你强制执行 id
唯一性。