簡體   English   中英

如何在Neo4j中找到匹配關系模式的節點列表?

[英]How to find a list of nodes matching a relationship pattern in Neo4j?

我必須找到所有節點x1 x2 x3 ,使得x1-[:R1]->x2-[:R2]->x3

這里R1R2是事先已知的,我們必須找到所有與條件匹配的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM