在Neo4j中能否手动设置节点ID,以便区分节点并匹配边或路径?
在Neo4j中自定义节点ID用于匹配边/路径
- 别用Neo4j内置ID:Neo4j自动分配的内部ID(
id(node)可获取)会在节点删除后被复用,没法作为稳定的业务唯一标识,绝对不能用来做节点区分。 - 自定义属性ID是靠谱方案:你现在把ID放到节点属性里的做法完全正确,还可以优化得更规范:
- 创建节点时显式指定自定义ID:
CREATE (p:Product {prodId: 'P0001', name: '无线耳机'}) - 给自定义ID加唯一约束,避免重复:
CREATE CONSTRAINT unique_prodId FOR (p:Product) REQUIRE p.prodId IS UNIQUE
- 创建节点时显式指定自定义ID:
- 用自定义ID匹配边/路径:查询时直接通过自定义ID定位节点,再关联关系,比如:
这样就能精准匹配指定节点间的边或路径。MATCH (p1:Product {prodId: 'P0001'})-[r:RELATED_TO]->(p2:Product {prodId: 'P0002'}) RETURN p1, r, p2
内容的提问来源于stack exchange,提问作者Jackie Shi
相关产品推荐
相关产品推荐

