neo4j 將乙個節點的屬性複製到另乙個節點上

2022-08-27 18:03:10 字數 2086 閱讀 6399

在使用python操作neo4j資料庫的時候,經常會遇到重複的節點,需要將乙個節點的屬性複製到另乙個節點,之後將該節點刪除。

def copy_node_properties(source_node_id,target_node_id,graph=none):

"""將節點 source_node_id 的屬性複製到節點 target_node_id 上面

"""if source_node_id is none or target_node_id is none:

return

if graph is none:

graph = get_graph()

#將源節點的所有的內容合併到目標節點

match = "match (x) where id(x)= %s or id(x)=%s return x " % (source_node_id,target_node_id)

result = graph.run(match).data()

if result is not none and len(result) == 2 and result[0]["x"] is not none and len(result[0]["x"].nodes) > 0 and result[1]["x"] is not none and len(result[1]["x"].nodes) > 0:

n1 = result[0]["x"].nodes[0]

n2 = result[1]["x"].nodes[0]

to_merge_node = n1 if n1.identity == target_node_id else n2

source_node = n1 if n1.identity == source_node_id else n2

#複製標籤到目標節點

target_node_labels =

if to_merge_node.labels is not none:

for a in to_merge_node.labels:

to_add_labels =

if source_node.labels is not none:

for a in source_node.labels:

if a not in target_node_labels:

temp = "set x:" + a

#複製屬性資訊

fields =

for k,v in source_node.items():

if v is none:

continue

if k in to_merge_node:

if to_merge_node[k] is none:

continue

if to_merge_node[k] == v:

continue

max = v if len(v) > len(to_merge_node[k]) else to_merge_node[k]

min = v if len(v) < len(to_merge_node[k]) else to_merge_node[k]

v = max if max.find(min) >= 0 else to_merge_node[k] + "/" + v

temp = "set x.%s = '%s'" % (k,v)

if len(fields) ==0 and len(to_add_labels)==0:

return true

fields_str = " ".join(fields)

labels_str = " ".join(to_add_labels)

match = "match (x) where id(x)= %s %s %s return x " % (target_node_id,labels_str,fields_str)

result = graph.run(match).data()

if result is not none and len(result) > 0:

return true

else:

return false

return

將neo4j的乙個節點上的關係移動到另乙個節點上

將neo4j中乙個節點的全部關係移動到另乙個節點上面,採用先建立新關係,之後刪除原先的關係的方式 1 def move relations source node id,target node id,graph none 2 3將 source node id 上所有的關係移動到 target no...

neo4j建立節點之間的關係

節點的建立時很簡單的,只要用create建立名字和屬性即可。但是節點的關係建立有點複雜,因為需要考慮如何匹配到有關係的兩個節點,以及關係本身的屬性如何設定。這裡我簡單學一下如何建立節點之間的關係。選擇的順序是由易到難,而不是場景的使用頻率。語法 create return 案例 create fb1...

neo4j獲取給定id的節點的父節點

我有這個neo4j資料庫,我有感興趣的節點的id。我需要找到那些節點的父節點。我怎樣才能做到這一點?我正在使用py2neo,我有乙個neo4j物件。問題是我根本不認識cypher,甚至不知道gremlin。什麼密碼查詢會給我結果?1 個答案 答案 0 得分 2 由於您沒有共享資料模型,我假設您的節點...