如何在Cypher查询的WHERE子句中添加OR逻辑实现双向包含判断?
实现Cypher查询中的双向包含匹配逻辑
很简单,你只需要在any()函数的判断条件里用OR运算符把两个包含逻辑连接起来就行。这里要注意,如果value是你要传入的外部参数,记得加上美元符号$(比如$value);如果是固定字面量,直接写字符串即可。
修改后的完整查询语句如下:
MATCH (s:Product {id:'002'})-[r]->(o:Attributes) WHERE any(key in keys(o) WHERE key CONTAINS value OR value CONTAINS key) RETURN s, r, o
额外补充说明:
- 如果你原查询里的
value其实是笔误,实际想指代Attributes节点中key对应的属性值,那需要把第二个条件调整为o[key] CONTAINS key,以此获取该键对应的属性值来做判断,语句会变成:MATCH (s:Product {id:'002'})-[r]->(o:Attributes) WHERE any(key in keys(o) WHERE key CONTAINS o[key] OR o[key] CONTAINS key) RETURN s, r, o any()函数会遍历目标节点的所有属性键,只要有任意一个键满足其中一个包含条件,这个节点就会被筛选出来。
内容的提问来源于stack exchange,提问作者user697911
相关产品推荐
相关产品推荐

