2014-02-06 52 views
0

我想創建一個Cypher的可重用位,我可以快速添加多個節點,如果它們尚未創建。 這是我正在嘗試的:
MERGE(n:Mal_Source {IP:'123.45.543',時間:'12 .32.12',位置:'加拿大',分類:'IP_ADRESS',日期:'12/21/01'}), (n:Mal_Source {IP:'123.45.542',時間:'12.2.12',位置:'老撾',分類:'IP_ADRESS',日期:'01/02/13 '}), (n:Mal_Source {IP:'123.45',時間:'12.32.1',位置:'烏拉圭',分類:'IP_ADRESS',日期:'03/05/09'}), n:Mal_Source {IP:'123.543',時間:'1.32.12',位置:'Chile',分類:'IP_ADRESS',日期:'05/06/07'}), (n:Mal_Source {IP: '333.45.543',時間:'1212.32.12',位置:'Vietnam',分類器:'IP_ADRESS',日期:'06/05/12'}), (n:Mal_Source {IP:'123.4555.543 ',時間:'5512.32.12',地點:'韓國',分類:'IP_ADRESS',日期:'05/09/05'}) RETURN n
我不明白爲什麼它不會工作。有沒有辦法添加多個節點的屬性Neo4j與Cypher

+0

相反逗號分隔,分割合併? –

回答

0

MERGE檢查模式,以逗號分隔的節點不構成模式。單個節點確實會形成一個模式。 MERGE不會自動檢查所有逗號分隔的節點。

兩件事情你必須做的:

  • 使用所有節點單獨MERGE
  • 名稱不同的別名的節點,即n:Mal_Sourcem:Mal_Source

    MERGE (n:Mal_Source {IP:'123.45.543', time:'12.32.12', location:'Canada',  Classifier:'IP_ADRESS',Date:'12/21/01'}) 
    MERGE (m:Mal_Source { IP:'123.45.542', time:'12.2.12', location:'Laos', Classifier:'IP_ADRESS',Date:'01/02/13'}) 
    MERGE (o:Mal_Source { IP:'123.45', time:'12.32.1', location:'Uruguay', Classifier:'IP_ADRESS',Date:'03/05/09'}) 
    MERGE (p:Mal_Source { IP:'123.543', time:'1.32.12', location:'Chile', Classifier:'IP_ADRESS',Date:'05/06/07'}) 
    MERGE (q:Mal_Source { IP:'333.45.543', time:'1212.32.12', location:'Vietnam', Classifier:'IP_ADRESS',Date:'06/05/12'}) 
    MERGE (r:Mal_Source { IP:'123.4555.543', time:'5512.32.12', location:'South Korea', Classifier:'IP_ADRESS',Date:'05/09/05'}) 
    RETURN n,m,o,p,q,r 
    
+0

謝謝@Sumeet!如果使用create而不是Merge會更有意義嗎?我正在構建這個以支持快速查詢,如果我必須匹配這些別名,那麼使用不同的別名會限制這種能力? – user2338089

+0

通過合併創建將保證節點模式的唯一性,並且別名不是永久性的,就像如果再次運行MATCH查詢來說明上述密碼查詢的n個,m個節點,那麼您可以使用不同的別名,如n1,n2。性能將取決於圖表設計以及您的匹配查詢將如何智能化,當然還有索引 –

+0

感謝您的解釋! – user2338089

相關問題