首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于查找精确匹配的节点的Neo4j Cypher查询(AND而不是OR)

用于查找精确匹配的节点的Neo4j Cypher查询(AND而不是OR)
EN

Stack Overflow用户
提问于 2012-11-19 22:42:17
回答 2查看 586关注 0票数 1

我正在尝试创建一个查询,它为我带来一些与一组节点完全匹配的节点。在这种情况下,我想带来有标签的体验,例如,哪些体验有标签:“食物”、“夜生活”和“文化”。

我的查询是“工作”,但是使用OR而不是AND带来结果。我怎么才能修复它?

我不确定我是否使用了正确的方法

代码语言:javascript
运行
复制
@Query("START experience = node:__types__(className=\"...\"), tags = node({0}) " +
  "WHERE experience-[:TAGGED]->tags " +
  "RETURN experience")
public Set<Experience> findExperiencesByTags(Set<Long> tagIds);

我使用的是Spring Data 2.0.1和neo4j 1.6.3。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-19 23:34:47

试着把它分成3个不同的匹配短语:

代码语言:javascript
运行
复制
"MATCH experience-[:TAGGED]->tags1, experience-[:TAGGED]->tags2,  experience-[:TAGGED]->tags3, " +
"WHERE tags1.tag='food' AND tags2.tag='culture' AND tags3.tag='nightlife' "
票数 1
EN

Stack Overflow用户

发布于 2012-11-22 10:21:05

我同意@ulkas

如果你真的想传入任意数量的标签,你可以尝试这样做,但它的性能可能不如显式匹配。

代码语言:javascript
运行
复制
START tags = node({0}) 
MATCH experience-[:TAGGED]->tags
WITH experience, count(*) as cnt
WHERE cnt = length({0})
RETURN experience
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13456072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档