[英]neo4j cypher - how to find all nodes that have a relationship to list of nodes
[英]How to find a list of nodes matching a relationship pattern in Neo4j?
我必須找到所有節點x1
x2
x3
,使得x1-[:R1]->x2-[:R2]->x3
。
這里R1
和R2
是事先已知的,我們必須找到所有與條件匹配的x1
x2
x3
。 同樣,關系的數量可以增加或減少,即可能存在三個關系R1
R2
R3
並且它應該返回所有滿足條件的x1
x2
x3
x4
。
我需要使用Java API而不是Cypher查詢來執行此操作。
我找到了PatternNode和PatternRelationship類,但是發現很難理解以及如何構造它們才能實現我想要實現的目標。 同時也不推薦使用這兩個類。 有沒有辦法可以通過Java實現呢?
您可以通過兩種方法遍歷Java中的圖形。 這些是您的選擇:
執行密碼查詢
使用ExecutionEngine執行Cypher查詢:
final ExecutionEngine engine = new ExecutionEngine(graphDB);
ExecutionResult result = engine.execute("YOUR_CYPHER_QUERY");
使用Cypher DSL語法
同樣,您基本上是在編寫Cypher查詢,但是這次,您使用了不錯的DSL語句。 查看https://github.com/neo4j/cypher-dsl 。
Execute q = start(node("john", john)).
match(path().from("john").out("friend").link().out("friend").to("fof")).
returns(properties("john.name", "fof.name"));
ExecutionResult result = engine.execute( q.toString() ).toString();
使用遍歷API
您可以控制完整的圖形遍歷。 一個例子:
for (final Path position : Traversal.description().depthFirst()
.relationships(RelationType.RELATIONSHIP_TYPE, Direction.INCOMING).traverse(node)) {
System.out.println(position.endNode();
}
這取決於您,但是我希望使用簡單的Cypher語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.