如何在Neo4J 3.x中使用内置过程管理关系索引并过滤关系类型
在Neo4j 3.x中实现关系类型过滤的方法
嗨,我来帮你搞定这个版本迁移的问题!在Neo4j 3.x里,虽然显式索引的调用方式变了,但过滤关系类型的逻辑其实和2.x很像,只需要调整一下语句结构就行。
具体实现语句
你可以在调用db.index.explicit.auto.seekRelationships之后,通过YIELD拿到返回的关系,再用WHERE子句过滤关系类型,完全兼容你之前的后续逻辑:
CALL db.index.explicit.auto.seekRelationships('user', '15229100-b20e-11e3-80d3-6150cb20a1b9') YIELD relationship AS rel WHERE TYPE(rel) = 'TO' WITH DISTINCT rel MATCH (ctx:Context) WHERE rel.context = ... // 这里可以继续你的后续业务逻辑
关键说明
- 3.x中用
CALL ... YIELD的结构替代了2.x的START子句,YIELD relationship AS rel是把索引查询到的关系赋值给rel变量,方便后续操作。 - 过滤关系类型的
WHERE TYPE(rel)='TO'和你在2.x里的写法完全一致,不需要修改。 - 后面的
WITH DISTINCT rel和MATCH逻辑可以直接沿用你原来的代码,不需要做额外调整。
如果你的自动索引是针对特定关系类型设计的,也可以考虑在创建索引时就限定类型,但如果是通用索引的话,上面的写法就是最直接有效的解决方案啦。
内容的提问来源于stack exchange,提问作者Aerodynamika
相关产品推荐
相关产品推荐

