2013-02-14 111 views
1

我正在使用Neo4j .NET客戶端ExecuteGetCypherResults來運行密碼。它期望所有的東西都會回到一個專欄中。我有簡單的課JobType它包含一個列表JobSpecialties就可以了。在數據庫中,這被建模爲與專業有關係的類型。Cypher查詢返回相關節點爲兒童

enter image description here

我需要返回結果因爲如此,在單個列一個暗號查詢。相關Specialties應該是Type節點的子屬性我希望查詢看起來像這樣:

start s=node:node_auto_index(StartType='JobTypes') 
match s-[:starts]->t, t-[:SubTypes]->ts 
return {Id: t.Id, Name: t.Name, JobSpecialties: ts} 

但是,這是行不通的。如果這甚至可能,我無法從文檔中找出答案。如果有更好的方法將結果返回給.Net客戶端,我願意接受建議。

回答

0
start s=node:node_auto_index(StartType='JobTypes') 
match s-[:SubTypes]->js 
return s.Id, s.Name, js; 
+1

他要求在單個列中輸出結果(如在return子句中沒有逗號)。他特別要求這樣做,因爲[.Net Neo4jClient](http://hg.readify.net/neo4jclient/wiki/Home)會在嘗試返回多列時拋出錯誤。 – ean5533 2013-02-15 16:20:24

+1

應該像這樣工作:start s = node:node_auto_index(StartType ='JobTypes') match s - [:SubTypes] - > js return [s.Id,s.Name,js]; – 2013-02-20 07:55:19

+0

@MichaelHunger在陣列投影中你不能有不同的類型,Cypher會嚇壞了。如果在數組中包含一個字符串和一個節點,則該節點將轉換爲其最長可能的形式(每個屬性指向該節點的一個url)。這是無法使用的。 – Tyrsius 2013-02-20 17:54:30

0

這聽起來像.Net客戶端需要一些更新密碼。 Cypher並不支持即時創建地圖,儘管它已經在功能請求列表中...

您可以創建一個包含您的結果的數組(但從1.9.M04開始,它們需要在同類型合併到數組): http://console.neo4j.org/r/xo7voi

其實我已經提交pull請求(通過背面通道,因爲它打破了一些單元測試)來解決這個問題(所以你可以在多種類型數組的構建),但我認爲是否合併不同類型是一個好主意。

https://github.com/wfreeman/neo4j/commit/ca457ace0df4732376833b8694e4affac4143244

更新:這將固定在1.9.M05/1.9.GA。現在你可以構建一個混合任意類型的數組: http://console.neo4j.org/r/vm4f83

0

ExecuteGetCypherResults確實支持多列,你只需要將我們的解串器踢入不同的模式即可。這是一個通常隱藏在我們更高級別API背後的實現細節,這就是爲什麼這不明顯。

當您撥打new CypherQuery時,通過CypherResultMode.Projection而不是CypherResultMode.Set

我實際上不記得我們爲什麼有這個。有時候,我需要挖掘更低的層次並嘗試殺死它。拉請求歡迎。 :)

儘管如此,我們總是喜歡人們使用更高級別的API(但我們認識到有一些限制)。

+0

不幸的是,你的高層API不適用於很多事情,因爲[你在這裏陳述](http://hg.readify.net/neo4jclient/issue/45/cyper-should-allow-for-flexible-order -的)。我們無法開始使用不起作用的API,因此我們被困在較低層的API中。 「投影」模式很有幫助,但它看起來並不是真正的投影,只是聚合。要將它們聚集在客戶端上,您需要一個特殊類型來保存每列,然後遍歷結果以將其放入最終類型。有一個更好的方法嗎?我不想爲每個投影做一個類。 – Tyrsius 2013-02-20 17:50:07

+0

此測試是否演示如何使用高級API來查詢相同的數據? https://bitbucket.org/Readify/neo4jclient/commits/d51442b33ab65c11aee0b56183d74ff18626f42f – 2013-02-20 21:47:32

+0

從構建1.0.0.504開始,我們現在擁有*更多*更靈活的流暢API和問題45(https://bitbucket.org/Readify/ neo4jclient/issue/45)現在已關閉。 – 2013-02-20 22:31:35