通过过滤边缘属性

时间:2019-06-17 06:57:21

标签: neo4j cypher

在电影数据库中,我想查找演员和他们在某个时间范围内播放的电影的数量。目前,我没有集成时间范围过滤,而是使用以下查询

MATCH (n:Person)-[r:ACTED_IN]->(:Movie)
WITH n, r, SIZE( (n)-[:ACTED_IN]->(:Movie) ) as degree
WHERE degree > 3 
RETURN DISTINCT ID(n) as id, n.name as Actor, degree as Count
ORDER BY degree DESC SKIP 0 LIMIT 100

如果我可以进行

这样的查询
MATCH (n:Person)-[r:ACTED_IN]->(:Movie)
WITH n, r, SIZE( (n)-[r2:ACTED_IN where r2.released > 1990 and r2.released < 2000 ]->(:Movie) ) as degree
WHERE degree > 3 
RETURN DISTINCT ID(n) as id, n.name as Actor, degree as Count
ORDER BY degree DESC SKIP 0 LIMIT 100

它将起作用。在度计算过程中如何对边缘属性进行过滤?

2 个答案:

答案 0 :(得分:0)

我想我发现了

MATCH (n:Person)-[r:ACTED_IN]->(:Movie)
WHERE r.begin_datetime > 0 AND r.end_datetime < 1560755054828
WITH n, SIZE(COLLECT(r)) as degree
WHERE degree > 3
RETURN DISTINCT ID(n) as id, n.name as Actor, degree as Count 
ORDER BY degree DESC SKIP 0 LIMIT 100

答案 1 :(得分:0)

您可以通过电影数据库中的released属性进行过滤,最后使用count function来获取1990-2000年期间每个演员表演的电影数量。

MATCH (n:Person)-[r:ACTED_IN]->(m:Movie)
WHERE m.released > 1990 AND m.released < 2000
RETURN n.name as Actor, COUNT (DISTINCT m) as Count

输出:

╒════════════════════════╤═══════╕
│"Actor"                 │"Count"│
╞════════════════════════╪═══════╡
│"Emil Eifrem"           │1      │
├────────────────────────┼───────┤
│"Hugo Weaving"          │1      │
├────────────────────────┼───────┤
│"Laurence Fishburne"    │1      │
├────────────────────────┼───────┤
│"Carrie-Anne Moss"      │1      │
├────────────────────────┼───────┤
│"Keanu Reeves"          │3      │
├────────────────────────┼───────┤
│"Charlize Theron"       │2      │
├────────────────────────┼───────┤
│"Al Pacino"             │1      │
├────────────────────────┼───────┤
│"Demi Moore"            │1      │
├────────────────────────┼───────┤
│"Kevin Pollak"          │1      │
├────────────────────────┼───────┤
│"James Marshall"        │1      │
├────────────────────────┼───────┤
│"Kiefer Sutherland"     │1      │
├────────────────────────┼───────┤
│"Kevin Bacon"           │2      │
├────────────────────────┼───────┤
│"J.T. Walsh"            │2      │
├────────────────────────┼───────┤
│"Tom Cruise"            │1      │
├────────────────────────┼───────┤
│"Aaron Sorkin"          │1      │
├────────────────────────┼───────┤
│"Christopher Guest"     │1      │
├────────────────────────┼───────┤
│"Jack Nicholson"        │3      │
├────────────────────────┼───────┤
│"Cuba Gooding Jr."      │3      │
├────────────────────────┼───────┤
│"Noah Wyle"             │1      │
├────────────────────────┼───────┤
│"Helen Hunt"            │2      │
├────────────────────────┼───────┤
│"Greg Kinnear"          │2      │
├────────────────────────┼───────┤
│"Max von Sydow"         │2      │
├────────────────────────┼───────┤
│"Robin Williams"        │3      │
├────────────────────────┼───────┤
│"Werner Herzog"         │1      │
├────────────────────────┼───────┤
│"Annabella Sciorra"     │1      │
├────────────────────────┼───────┤
│"Ethan Hawke"           │1      │
├────────────────────────┼───────┤
│"Rick Yune"             │1      │
├────────────────────────┼───────┤
│"James Cromwell"        │2      │
├────────────────────────┼───────┤
│"Meg Ryan"              │3      │
├────────────────────────┼───────┤
│"Steve Zahn"            │1      │
├────────────────────────┼───────┤
│"Parker Posey"          │1      │
├────────────────────────┼───────┤
│"Tom Hanks"             │6      │
├────────────────────────┼───────┤
│"Dave Chappelle"        │1      │
├────────────────────────┼───────┤
│"Rosie O'Donnell"       │2      │
├────────────────────────┼───────┤
│"Rita Wilson"           │1      │
├────────────────────────┼───────┤
│"Victor Garber"         │1      │
├────────────────────────┼───────┤
│"Bill Pullman"          │1      │
├────────────────────────┼───────┤
│"Bruno Kirby"           │1      │
├────────────────────────┼───────┤
│"Carrie Fisher"         │1      │
├────────────────────────┼───────┤
│"Billy Crystal"         │1      │
├────────────────────────┼───────┤
│"Liv Tyler"             │1      │
├────────────────────────┼───────┤
│"Nathan Lane"           │1      │
├────────────────────────┼───────┤
│"Gene Hackman"          │2      │
├────────────────────────┼───────┤
│"Clint Eastwood"        │1      │
├────────────────────────┼───────┤
│"Richard Harris"        │1      │
├────────────────────────┼───────┤
│"Ice-T"                 │1      │
├────────────────────────┼───────┤
│"Dina Meyer"            │1      │
├────────────────────────┼───────┤
│"Takeshi Kitano"        │1      │
├────────────────────────┼───────┤
│"Michael Clarke Duncan" │1      │
├────────────────────────┼───────┤
│"David Morse"           │1      │
├────────────────────────┼───────┤
│"Bonnie Hunt"           │1      │
├────────────────────────┼───────┤
│"Sam Rockwell"          │1      │
├────────────────────────┼───────┤
│"Patricia Clarkson"     │1      │
├────────────────────────┼───────┤
│"Gary Sinise"           │2      │
├────────────────────────┼───────┤
│"Danny DeVito"          │1      │
├────────────────────────┼───────┤
│"John C. Reilly"        │1      │
├────────────────────────┼───────┤
│"Bill Paxton"           │3      │
├────────────────────────┼───────┤
│"Ed Harris"             │1      │
├────────────────────────┼───────┤
│"Zach Grenier"          │1      │
├────────────────────────┼───────┤
│"Philip Seymour Hoffman"│1      │
├────────────────────────┼───────┤
│"Oliver Platt"          │1      │
├────────────────────────┼───────┤
│"Madonna"               │1      │
├────────────────────────┼───────┤
│"Lori Petty"            │1      │
├────────────────────────┼───────┤
│"Geena Davis"           │1      │
└────────────────────────┴───────┘