【问题标题】:NEO4J: get movies where some actors of a given did not actNEO4J:获取特定演员没有表演的电影
【发布时间】:2019-04-16 15:27:45
【问题描述】:

使用电影图,我有以下问题:movies where Keanu Reeves AND Robin Williams did not act?

为了解决这个问题,我有以下两个查询:

MATCH (m:Movie)<-[:ACTED_IN]-(p:Person)
WITH m, collect(p) as actors
WHERE NONE (actor in actors WHERE actor.name IN ['Keanu Reeves', 'Robin Williams','Frank Langella'])
RETURN m

或者:

MATCH (m:Movie)
WHERE NONE(n in ['Keanu Reeves', 'Robin Williams','Frank Langella'] WHERE (m)<-[:ACTED_IN]-(:Person {name:n}))
RETURN m

但现在我想获得最多三人之一出演的电影。为此,我搜索了谓词函数,但找不到获取出现次数的方法。

我怎样才能得到一部分给定演员没有表演的电影?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您可以将 NONE 与 SINGLE 结合使用

    MATCH (m:Movie)
    WHERE NONE(n in ['Keanu Reeves', 'Robin Williams','Frank Langella'] WHERE (m)<-[:ACTED_IN]-(:Person {name:n}))
    OR SINGLE(n in ['Keanu Reeves', 'Robin Williams','Frank Langella'] WHERE (m)<-[:ACTED_IN]-(:Person {name:n}))
    RETURN m
    

    或者你可以数一下图案的外观

    MATCH (m:Movie)
    OPTIONAL MATCH (m)<-[:ACTED_IN]-(p:Person))
    WHERE p.name in ['Keanu Reeves', 'Robin Williams','Frank Langella']
    WITH m, COUNT(p) as count
    WHERE count < 2
    RETURN m
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-01
      • 2015-06-20
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 2017-02-24
      相关资源
      最近更新 更多