2013-06-05 71 views
1

我試圖檢索未刪除的關係以及它們的源節點和目標節點。Cypher查詢檢索索引關係和加入的節點

我認爲這將是一樣簡單:

START relationship=relationship:relationship_auto_index(deleted="false") 
MATCH (source)-[relationship]->(target) 
RETURN relationship, source, target; 

但這返回9600行。

鑑於此:

START relationship = relationship:relationship_auto_index(deleted="false") 
RETURN relationship; 

返回30行

我期待一個對一個,但顯然,我錯誤地做一些事情。誰能告訴我什麼?

+0

試試你的第一個查詢RETURN子句中是不同的。怎麼了? – tstorms

回答

0

奇怪的是,這得到什麼,我想:

START source=node(*) 
MATCH source-[relationship]->target 
WHERE relationship.deleted = "false" 
RETURN source, relationship, target; 

這似乎效率不高。任何人都可以提供的任何洞察力將不勝感激。

+0

你試過更新到Neo4j 1.9或2.0-M03嗎?這可能是1.8.2之後修復的錯誤。 –

+0

是的,我正在使用2.0-M03。 –

0

兩者返回的內容有什麼區別?

如果我沒有記錯的話,你不能在cypher中做這樣的查詢,至少在1.8.2和1.9上它似乎也失敗了。

我想你所查詢的實際上是對所有節點進行全面掃描,並且只返回所有的對。我成立了一個small sample database。如果你點擊查看結果並查看解釋計劃,你會發現它有些奇怪。你可能想用Neo4j引發一個bug問題。

嘗試這樣:

START r=relationship(0) 
MATCH p=a-[r]->b 
RETURN Distinct(p) 
+0

這是我想要做的另一個例子:http://pastie.org/pastes/8015128/text。我想抓住特定關係的源節點和目標節點。出於某種原因,我得到了相同的結果兩次,只是以相反的順序。那是因爲關係本身並不是直接的,所以技術上它們都是相互關聯的? –

+0

另外,如果要掃描所有節點,能夠索引關係又有什麼意義? –

+0

因此,在你的示例數據庫中,你能解釋一下如何讓源和目標節點都獲得「知道」關係嗎? –

相關問題