0
我使用Neo4jPHP編寫了一個片段,它將給我一個與「主」節點(A)連接的所有節點的數組。節點連接是這樣的:使用neo4jphp獲得與主節點相關的所有節點的數組
A -> B
B -> C
C -> D
C -> E
B -> F
這是我使用neo4jPHP寫的代碼:
$client = new Everyman\Neo4j\Client();
$querystring="MATCH path=(n {gid:'58731'})-[:contains*]-(z) RETURN ([x in nodes(path) | x.id]) as names";
$query=new Everyman\Neo4j\Cypher\Query($client,$querystring);
$result=$query->getResultSet();
foreach($result as $resultItem){
$resultArray[] = $resultItem['n'];
}
print_r($resultArray); // prints the array
的問題是,$ resultArray店這涉及到主節點反覆(如節點這裏解釋:Strange behavior in neo4j when I try to get all the nodes which relate with a master node)
我的問題是:有沒有一種方法使用neo4jPhp取回一個數組,其中將包含所有與「主」節點相關的節點一次? 事情是這樣的:
$distinctNodes = [B,C,D,E,F]
感謝 D.
感謝您的回答!我遇到的一個問題是,該ID可能與另一個節點的另一個ID相同。在這種情況下使用DISTINCT會導致問題,對吧? – user1919
是的。在這種情況下,你應該使用一個屬性,而不是'id'。如果你沒有保證唯一的東西,你可以使用內部ID(通過'ID(z)')。節點的內部ID將是唯一的,但請注意,如果節點被刪除,則其內部ID可以重新分配給新節點。或者,您可以只使用節點本身(即,用'z'替換'z.id') - 但它們不會是簡單的字符串。 – cybersam
好的。大。我將在明天嘗試第一個想法:MATCH(n {gid:'58731'}) - [:contains * 1 ..] - >(z)RETURN ID(z)作爲名稱 – user1919