2015-06-06 58 views
2

此代碼距長度爲獲取節點(R)

MATCH (n { name: 'Create node' })<-[r*]-(s { name: ';' }) 
WITH n,s, LENGTH(r) AS depth 
RETURN n,s, depth 

將返回enter image description here第一個和最後節點之間的數量關係。是否有可能獲得這些關係之間的節點?

獎勵問題:是否可以讓他們按順序?

http://console.neo4j.org/r/z1iafh

(此代碼不能在控制檯中工作,只能在本地主機上。查詢到創建節點

create 
(_0 {name:"CREATE"}), 
(_1 {name:"("}), 
(_2 {name:"node_name"}), 
(_3 {name:")"}), 
(_4 {name:";"}), 
_1-[:CREATE_NODE_COMMAND]->_0, 
_2-[:CREATE_NODE_COMMAND]->_1, 
_3-[:CREATE_NODE_COMMAND]->_2, 
_4-[:CREATE_NODE_COMMAND]->_3 
) 

回答

1

你可以增加自己的匹配語句來匹配從ñ的整個路徑s然後您可以使用路徑上的nodes函數按順序返回節點集合(從n到s)。如果只需要開始和結束節點之間的節點,則可以返回集合形成第二個到第二個唯一。

MATCH p=(n { name: 'Create node' })<-[r*]-(s { name: ';' }) 
WITH n,s, size(r) as depth, length(p) as depth2, nodes(p) as nodes 
RETURN n,s, depth, depth2, nodes[1..length(nodes)-1] 

size()可用於返回一個集合中的元素的數目,而length()應該只用於返回路徑或一個字符串的長度。它在其他對象(集合和模式)上的使用可能在未來的neo4j版本中被棄用;目前支持向後兼容。