我是neo4j的新手,所以我可能会在这里犯一些基本错误:
这是我的图表的子集:
我有3种节点:
attributes
可以与 和 有关系promotions
businesses
(:TAGS
)
这是我迄今为止最好的猜测密码查询。
MATCH(a:Attribute)--(b:Business)--(p:Promotion)
WHERE a.name IN ["business", "casual", "happy_hour"]
RETURN a, b, p
UNION
MATCH(a:Attribute)--(p:Promotion)--(b:Business)
WHERE a.name IN ["business", "casual", "happy_hour"]
RETURN a, b, p;
这不是我正在寻找的,它返回与一个或多个相关的promotions
attributes
我只想返回与给定属性集中的所有属性具有关系的项。我应该怎么做?promotions
attributes
这应该有效。
// create collection of myTagNodes
WITH ["business", "casual", "happy_hour"] AS myTags
MATCH (myTagNode:TAG) WHERE myTagNode.name IN myTags
WITH COLLECT(myTagNode) AS myTagNodes
// only return promotions for which all 'myTagNodes'are in the
// (indirectly) connected tags, i.e. through buisnesses or directly
MATCH (p:Promotion)
WHERE ALL(myTagNode IN myTagNodes
WHERE myTagNode IN [(p)<-[*1..2]-(pTagNode:TAG) | pTagNode]
)
RETURN p
另请参见 https://neo4j.com/docs/developer-manual/current/cypher/syntax/lists/#cypher-list-comprehension 和 https://neo4j.com/docs/developer-manual/current/cypher/syntax/lists/#cypher-pattern-comprehension
感谢您的帮助,您可以指出一些文档吗:
[(p)<-[*1..2]-(p标签:TAG) |
已添加文档链接