首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用Cypher可以实现这种类型的过滤吗?

用Cypher可以实现这种类型的过滤吗?
EN

Stack Overflow用户
提问于 2021-11-10 05:03:42
回答 1查看 48关注 0票数 1

我有一个DSL来查询RedisGraph,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
App::Graph.query(movie: { title: 'Matrix' }, country: { value: 'Italy' , value: 'Spain', value: 'Greece' })

它会生成这个密码查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (m:Movie)<-[:ACTED_IN]-(a:Actor)
WHERE m.title = 'Matrix'
WITH m, collect(a) as actors
WHERE 1 = 1
AND (movie)<-[:AVAILABLE_IN]-(:Country {value: 'Italy'})
AND (movie)<-[:AVAILABLE_IN]-(:Country {value: 'Spain'})
AND (movie)<-[:AVAILABLE_IN]-(:Country {value: 'Greece'})
RETURN actors, m

问:在某些情况下,Country节点(例如西班牙)将没有edges,因此目前上述cypher查询将正确地不返回任何结果。但是,有没有可能重写上面的查询,以便在Country节点没有边的情况下忽略它,匹配并返回连接到剩余的初始定义的国家列表的节点,即意大利、希腊?

我已经尝试了很多选择,下面是最后一个,但没有找到实现这一点的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (m:Movie)<-[:ACTED_IN]-(a:Actor)
WHERE m.title = 'Matrix'
WITH m, collect(a) as actors
MATCH (m)<-[:AVAILABLE_IN]-(connected_countries)
WHERE connected_countries.value IN ['Italy', 'Spain', 'Greece']
WITH m, actors, collect(connected_countries.value) as relevant_countries
WHERE 1 = 1
AND ((movie)<-[:AVAILABLE_IN]-(:Country {value: 'Italy'}) AND IN relevant_countries)
AND ((movie)<-[:AVAILABLE_IN]-(:Country {value: 'Spain'}) AND IN relevant_countries)
AND ((movie)<-[:AVAILABLE_IN]-(:Country {value: 'Greece'}) AND IN relevant_countries)
RETURN actors, m
EN

回答 1

Stack Overflow用户

发布于 2021-11-15 05:07:39

请尝试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (m:Movie {title:'Matrix'})
WITH m AS m
UNWIND ['Italy', 'Spain', 'Greece'] AS country_name
MATCH (:Country {value: country_name})-[:AVAILABLE_IN]->(m)<-[:ACTED_IN]-(a:Actor)
WITH m, collect(a) as actors
RETURN actors, m
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69913773

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文