Neo4j能否无需上传关系文件自动检测实体间关联?
在Neo4j中无需关系文件直接创建实体关联的方法
完全可以不用上传关系文件,直接通过Cypher语句基于指定条件检测甚至创建实体间的关联。针对你提到的场景,这里给出具体的实现方法:
1. 直接创建符合条件的关联关系
如果需要直接把满足A.ID=B.ID且A.Year≤B.Year的节点对建立关联,可以用以下Cypher语句:
MATCH (a:A), (b:B) WHERE a.ID = b.ID AND a.Year <= b.Year MERGE (a)-[:YEAR_ORDERED]->(b)
MATCH子句负责匹配所有A和B类型的节点WHERE子句过滤出符合条件的节点对MERGE子句会自动创建不存在的关系,避免重复创建相同关联(如果用CREATE会重复生成关系,不推荐)- 把
:YEAR_ORDERED换成你实际业务中需要的关系类型即可,比如:PRECEDES、:RELATED_BY_ID等
2. 仅检测关联不创建关系
如果只是想验证哪些节点对符合条件,不需要创建关系,用返回语句即可:
MATCH (a:A), (b:B) WHERE a.ID = b.ID AND a.Year <= b.Year RETURN a.Name AS A名称, a.Year AS A年份, b.Name AS B名称, b.Year AS B年份
3. 优化查询效率的注意事项
为了让大规模数据的查询更高效,一定要给用到的属性创建索引:
CREATE INDEX idx_a_id FOR (a:A) ON (a.ID); CREATE INDEX idx_a_year FOR (a:A) ON (a.Year); CREATE INDEX idx_b_id FOR (b:B) ON (b.ID); CREATE INDEX idx_b_year FOR (b:B) ON (b.Year);
内容的提问来源于stack exchange,提问作者Amir Rouhi
相关产品推荐
相关产品推荐

