2014-03-31 26 views
0

有什麼方法可以使用地圖更新節點並且不會刪除現有屬性?使用地圖更新節點屬性而不刪除現有屬性

例如:我的節點道具:

{ 
    id : 123, 
    name : "foo" 
} 

現在我需要發個圖了相同的ID,但具有不同的屬性:

{ 
    id : 123, 
    age : 30 
} 

如果我這樣做,財產將從節點中刪除。

我無法手動設置屬性,因爲它們是動態的,並且可能因每個請求而不同。

更新:我這樣做是通過發送帶有params的Cypher查詢到REST API來完成的。

+1

您是否正在尋找一種方法在cypher或java api中執行此操作?還是休息? (也許你可以更新你的問題來說明問題。) – jjaderberg

+0

已更新。謝謝! – user3175226

回答

0

MERGE是您更新的朋友。

線沿線的東西:

{ "query" : "MERGE (n:Node {id: {idValue}}) ON MATCH SET n.age = {ageValue}", 
    "params" : { "idValue" : "123", "ageValue" : "30"} 
} 

...併發送至Cypher支架端點。

http://docs.neo4j.org/refcard/2.0/有合併細節。

http://docs.neo4j.org/chunked/stable/rest-api-cypher.html將幫助發送REST參數。

+0

我在查詢中使用合併,但問題是關於更新整個地圖而沒有刪除現有屬性 – user3175226

+0

而上面的答案不會刪除任何東西。它只是添加到現有的節點,如果它找到它。 – BtySgtMajor

+0

我想要的是一種僅僅傳遞整個地圖而不寫入查詢中的每個屬性的方法。我通過'SET n = params.entire_map'來完成,但它會刪除所有現有的屬性。 – user3175226