2014-11-17 15 views
1

我如何發現,僅作用在某年/秒,而不是在這之前開始暗號 - 讓演員在過去的2年

我試着寫一個查詢的演員擔任,但限制我找演員是在某一年表演但不拘泥於找到過去幾年的演員。

MATCH (actor:Actor)-[:ACTS_IN]->(actorMovies) where actorMovies.year = 2014 
RETURN actor.name Limit 100 

基本上我想找一個只參加2014年電影演員而另一組演員只參加90年代的演出。

回答

2

基本上我想找到誰在電影中只有2014擔任演員,另一組演員誰僅在90年代效力。你可以這樣做

一種方法是寫兩個查詢,並與工會一起加入他們的行列:

MATCH (actor:Actor)-[:ACTS_IN]->(actorMovies) where actorMovies.year = 2014 
RETURN actor.name 

UNION 

MATCH (actor:Actor)-[:ACTS_IN]->(actorMovies) where actorMovies.year >= 1990 AND actorMovies.year < 2000 
RETURN actor.name 
1

在這個例子中使用的數據:http://neo4j.com/docs/stable/cypherdoc-movie-database.html 你可以做這樣的事情:

MATCH (actor:Actor)-[:ACTS_IN]->(actorMovies) 
WITH actor, collect(actorMovies.year) AS years 
WHERE '1999-03-31' IN years 
RETURN actor.name 

的一點是做聚合在WITH子句中,然後使用結果的WHERE子句中之後。

如果整數用於這些年來,在WHERE子句看起來是這樣的:

WHERE 1999 IN years 
+0

我多年僅僅是一年的時間,它不返回任何東西...... MATCH (actor:Actor) - [:ACTS_IN] - >(actorMovies) WITH actor,collect(actorMovies.year)AS years WHERE'2013'IN years RETURN actor.name –

+0

是否刪除全年的引號使得區別? – nawroth

+0

它的確如此,但是真正的q只返回只在這個特定年份中行動的演員,並且從不在之前或之後從未在之後 –