2015-01-13 105 views
1

如果以前曾詢問過此問題,我非常抱歉。它似乎比本來應該是更基本的。使用Cypher與現有節點創建多個關係

我正在努力爲我的僱主評估Neo4j。我沒有參與建立eval環境,它似乎很小。我只有基於網頁的瀏覽器&密碼才能完成任何事情。我甚至無法將文件加載到服務器以便通過CSV加載。

而且我在加載測試數據時遇到了很多麻煩。我選擇使用數據倉庫元數據作爲主題,並添加:表節點,然後添加:模型節點(對錶[APPEAR_ON])的圖表編目。我應該指出...... APPEAR_ON關係源於RDMS中的多對多關係:一個模型包含許多表格;一個表格可以出現在多個模型上。所以我不認爲我能夠與節點同時加載關係。我不知道除了加載所有節點,然後加載所有關係以外還有什麼其他的嘗試。評論?

  • 我可以加載:表節點和:模型節點只是拉動 在一起的許多CREATE /合併在單獨的行和 粘貼到他們在瀏覽器中暗號查詢工具報表罰款。
  • 我也創建索引/唯一性約束這些標籤創建節點後。 (我加載了每個ID屬性。)
  • 但是我不能指出如何使用多語句方法創建關係。 MATCH (t:table),(m:model) WHERE t.tid = "T0525" AND m.mid = "M001" CREATE (t)-[R00864:APPEARS_IN]->(m) MATCH (t:table),(m:model) WHERE t.tid = "T0526" AND m.mid = "M001" CREATE (t)-[R00865:APPEARS_IN]->(m)

不幸的是,我只能通過包括在聲明的最後返回做一次這項工作之一。當我發送多個語句時,出現一個錯誤,說我需要在第一個語句的CREATE和第二個語句的MATCH之間包含WITH語句。

非常感謝您的想法!

回答

6

要格式化查詢,請選中cypher refcard的右上角框。您的查詢大部分都是正確的,但您想要做的太多了,我想。如果沒有with,則無法進行多個匹配/創建塊。

所以重寫一個方法是做它爲兩個查詢:

MATCH (t:table),(m:model) WHERE t.tid = "T0525" AND m.mid = "M001" CREATE (t)-[R00864:APPEARS_IN]->(m); 

MATCH (t:table),(m:model) WHERE t.tid = "T0526" AND m.mid = "M001" CREATE (t)-[R00865:APPEARS_IN]->(m); 

但你是「重配」是同一型號的兩倍。所以,你也可以這樣做:

MATCH (t1:table { tid: "T0525" }), 
     (m:model {mid: "M001"}), 
     (t2:table { tid: "T0526 }) 
CREATE (t1)-[R00864:APPEARS_IN]->(m), 
     (t2)-[R00865:APPEARS_IN]->(m); 

注意,我在爲比賽性質添加匹配標準淘汰WHERE,然後我用 一個逗號沒有一個單獨的查詢,以創建兩個單獨的CREATE語句,就像你可以做同樣的事情來做多個比賽。

+0

這很有幫助。我已經能夠用一條語句爲模型中的所有表創建關係。但是,我無法執行多個語句。我仍然需要一次運行一個。 –

+0

我不遵循 - 當然你需要一次執行一個語句。但是問題是什麼? – FrobberOfBits

+0

哎呦,我剛收到你的留言。我想在瀏覽器中加載多個(數百...數千...)語句,然後單擊執行一次。我不想手動執行每個語句。 –

相關問題