2012-10-14 69 views
2

我在C#中使用Neo4jClient和Neo4j圖形數據庫,我想知道如何使用Neo4jClient檢索所有節點。Neo4jClient C#如何獲得所有節點

這裏是暗號查詢檢索的有關係,「知道」獨立的關係方向的所有節點:

start n =node(*) match n-[r:KNOWS]-(friend) return friend; 

這裏是C#代碼Neo4jClient:

var client = new GraphClient(new Uri("http://localhost:7474/db/data")); 
client.Connect(); 

var cypherFluentQueryReturned = client.RootNode 
       .StartCypher("n") 
       .Match("n-[:KNOWS]->friend") 
       .Return<Node<Person>>("friend"); 

然而,Neo4jClient不允許從*開始檢索所有節點,但只能從一個起點(這裏是根節點)檢索所有節點。
我該如何說Neo4jClient檢索所有節點,而不僅僅是連接到根節點的節點?

似乎沒有辦法從*通過Neo4jClient.GraphClient查詢節點。

不過,我可以做到這一點的執行與RawGraphClient查詢:

CypherQuery query = new CypherQuery("start n=node(*) match n-[KNOWS]-(person) return person", new Dictionary<string, object>(), CypherResultMode.Set); 
var persons = ((IRawGraphClient)client).ExecuteGetCypherResults<Person>(query).ToList(); 
+0

由於Neo4JClient使用Neo4J的REST客戶端,因此返回數據庫中所有節點的JSON響應可能非常大。這可能是其尚未正式實施的原因之一。如果您只是試圖查詢與「知道」有關係的所有節點,則可能會嘗試使用關係上的索引。 –

回答

-1

我當然認爲這個問題是因爲它尚未在NEO4JClient庫中實現,而且,現在的問題是, Neo4JClient團隊遮蔽了ExecuteGetCypherResults,所以現在我們不得不直接實現IRawGraphClient,或者直接使用HttpWebRequest。 : - /至少這是我在使用bitbucker在他們的倉庫中看到一些信息後得出的結論。

+0

ExecuteGetCypherResults仍然可用。它記錄在https://bitbucket.org/Readify/neo4jclient/wiki/cypher –

1

使用Node<T>.StartCypher(identity)是創建查詢並一次性啓動它的快捷方式。

相反,只是直接從客戶端創建查詢:

client 
    .Cypher 
    .Start(new { n = All.Nodes }) 
    .Return<object>("n") 

然後,你必須在START條款完全控制。

相關問題