2016-04-08 16 views
2

Ich benutze neo4j-jdbc 2.3.2 als mein neo4j-Client für Java. Wenn ich folgende Chiffrieranfrage
match(p:Person) where p.id_number='761201948V' return p.id;
ausführte, gibt es P2547228 als Knoten Identifikation zurück. Ich fühle mich wie id ist wie andere Eigenschaften des Knotens, wie ich es innerhalb where-Klauseln verwenden kann.

Aber hier erwarte ich eine ganze Zahl, die innerhalb dieser Abfrage verwenden kann START p=node('node.id') return p; Ist diese ID eine interne Sache zu Neo4j db? Und gibt es eine Möglichkeit, diese ID abzurufen?

Aus den folgenden zwei cyphers was effizienteste? (Wenn beide denselben Knoten bezieht)
Abrufen der genauen Knoten-ID in Neo4j-Chiffre

  1. START p=node('2547223') return p;
  2. match(p:Person) where p.id='P2547228' return p;

Antwort

2

Sie haben die ID(x) Funktion für diesen Einsatz. Beachten Sie, dass ID(x) und x.id eine komplett andere Sache sind. Der erste gibt die interne Knoten-/Beziehungs-ID zurück, die von Neo4j selbst verwaltet wird. Letzteres ergibt die id Eigenschaft, die vom Benutzer und nicht von der Datenbank selbst verwaltet wird.

Beachten Sie auch, dass eine Knoten-/Beziehungs-ID immer numerisch ist.

START Verwendung ist so ziemlich der alten Schule und sollte nicht mehr verwendet werden (mit Ausnahme der manuellen Indizes zugreifen):

start p=node(2547228) return p 

Dieses eine äquivalente Aussage. Es ist sehr effizient, da sie nur den Betrieb auf dem Knoten Laden ein einfaches suchen tun muss:

match(p:Person) where id(p)=2547228 return p; 

Suche nach einer Immobilie erfordert entweder einen Knoten-Label-Scan oder ein Schema Indexsuche:

match(p:Person) where p.id=2547228 return p; 

Nur Überprüfen Sie die Abfragepläne selbst, indem Sie die Anweisung mit PROFILE voranstellen.

+0

genau was ich will, danke sehr viel ... – Hasitha

Verwandte Themen