2016-07-07 16 views
0

Neo4jを初めて使用し、ムービーデータベースの例についていくつかのクエリを試してみました。 役割名に「Joe」という単語が含まれているすべての俳優と映画の組み合わせを探したい。これはどうすればいいですか?Neo4j 3.0.3の文字列コレクションでの検索方法

私は完全なロール名を知っているときにクエリを実行できます。ジョー・バンクス。私はそのために使用するクエリがある -

MATCH (p:Person)-[r:ACTED_IN]-(movie:Movie) 
WHERE 'Joe Banks' in (r.roles) 
RETURN p,movie,r.roles; 

答えて

2

list predicate functionanyを使用します。

MATCH (m:Movie)<-[r:ACTED_IN]-(a:Person) 
WHERE any(role in r.roles WHERE role CONTAINS "Joe") 
RETURN m,r,a 

編集

あなたがtoLower機能を使用することができます大文字小文字を区別しない文字列比較のために:

MATCH (m:Movie)<-[r:ACTED_IN]-(a:Person) 
WHERE any(role in r.roles WHERE toLower(role) CONTAINS toLower("joe")) 
RETURN m,r,a 
+0

ありがとう!この検索で​​大文字と小文字を区別しないようにする –

+0

'toLower'関数を使って、文字列比較演算子のどちらかをラップすることができます。 –

+0

toLower()またはtoUpper()などを使用すると、クエリではプロパティに存在するインデックスを利用できないことに注意してください。 – InverseFalcon