在使用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 由於您沒有共享資料模型,我假設您的節點...