2012-11-30 8 views
5

Ich versuche, eine Chiffre-Abfrage zu tun, rufen Sie (in Java) in Parameter übergeben, wie etwas zu tun:Neo4j ein Array oder einer Sammlung als Parameter in cypher Abfrage mit

WHERE node.property IN [{param}] 

Voll Beispiel:

START person=node:persons('Name:*') 
MATCH person->[:Girl]->friend 
WHERE person.Name IN [{Names}] AND friend.Hair = 'Blond' 
RETURN person.Name, friend.Name 

Für den Parameter habe ich versucht, die folgenden ein:

  1. Sammlung enthalten Strings
  2. enthaltend
  3. Array Strings
  4. Zeichenfolge mit Trennzeichen wie „‚Joe Schlag‘,‚Blow Joe‘“

Ich dachte wirklich, der letzte funktionieren würde, aber ich denke, die Parameter als einzelne Zeichenfolge ersetzt wird, dh [ "Joe Blow", "Blow Joe" und nicht ["Joe Blow", "Blow Joe"]. Ich habe dies bewiesen, indem ich einen Wert übergeben habe, und das hat funktioniert. Ich habe versucht, durch den Code zu verfolgen, ging aber in scala verloren.

Alle anderen Optionen, Gedanken?

Prost

Antwort

9

Es sollte besser funktionieren, wenn Sie die eckigen Klammern nach dem Schlüsselwort IN entfernen, und eine Sammlung als Parameter verwenden.

START person=node:persons('Name:*') 
MATCH person->[:Girl]->friend 
WHERE person.Name IN {Names} AND friend.Hair = 'Blond' 
RETURN person.Name, friend.Name 
+0

Sie Meister, funktioniert wie beschrieben. Danke. – sverze