具有多个关系的密码过滤

时间:2016-09-16 12:00:20

标签: neo4j cypher

我有以下查询

MATCH (wallstreet { title:'Wall Street' })<-[r:ACTED_IN|DIRECTED]-(person)
RETURN person

我需要

  1. 分别对ACTED_INDIRECTED应用过滤器。

  2. 路径可以包含ACTED_IN两次。我可能需要对ORAND应用两个条件。

  3. 分别为ACTED_IN和DIRECTED申请INCOMING和OUTGOING以及

  4. 任何正文都可以提供满足上述三个要求的密码查询吗?

    Pseudo cypher

    MATCH (wallstreet { title:'Wall Street' })<-[r:ACTED_IN{Name:"Titanic"}|r1:DIRECTED{Name:"iceage1"}|r1:DIRECTED{Name:"Iceage2"}]-(person)
    RETURN person
    

    如果您观察到Psedo代码,我只更改了关系部分。我添加了三个相同类型的关系。我为关系部分中的每个关系添加了过滤器属性。

1 个答案:

答案 0 :(得分:1)

这可能接近你要找的东西。我假设电影标题存储在电影节点中,而不是关系中:

MATCH ({title:'Wall Street'})<-[:ACTED_IN|DIRECTED]-(person)-[r:ACTED_IN|DIRECTED]->(other)
WHERE
  (TYPE(r) = 'ACTED_IN' AND other.title = 'Titanic') OR
  (TYPE(r) = 'DIRECTED' AND other.title IN ['Ice Age 1', 'Ice Age 2'])
RETURN person;

该查询会查找所有参与或指示过“华尔街&#34;谁也参加了泰坦尼克号&#34;或指导前2&#34;冰河时代&#34;电影。