Neo4jで大文字と小文字を区別しない暗号クエリを実行することは可能ですか?
それを試してください: http://console.neo4j.org/
これを入力すると:
start n=node(*)
match n-[]->m
where (m.name="Neo")
return m
1行を返します。しかし、これを入力すると:
start n=node(*)
match n-[]->m
where (m.name="neo")
return m
何も返しません。名前が「Neo」として保存されているためです。大文字と小文字を区別しないクエリを実行する簡単な方法はありますか?
はい、大文字と小文字を区別しない正規表現を使用します。
WHERE m.name =~ '(?i)neo'
https://neo4j.com/docs/cypher-manual/current/clauses/where/#case-insensitive-regular-expressions
別の方法は:
WHERE LOWER(m.Name) = LOWER("Neo")
また、Neo4jクライアント(.NET)を使用している場合:
Client.Cypher.Match("(m:Entity)")
.Where("LOWER(m.Name) = LOWER({name})")
.WithParam("name", inputName)
.Return(m => m.As<Entity>())
.Results
.FirstOrDefault();
パラメータでこれを行う方法を誰かが探しているなら、私はこのようにしてなんとかしました。
query = "{}{}{}".format('Match (n) WHERE n.pageName =~ "'"(?i)", name, '" RETURN n')
"name"は変数またはパラメーターです