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

2022-08-27 18:03:10 字數 2094 閱讀 8078

將neo4j中乙個節點的全部關係移動到另乙個節點上面,採用先建立新關係,之後刪除原先的關係的方式

1

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

2"""

3將 source_node_id 上所有的關係移動到 target_node_id 上

4"""

5if source_node_id is none or target_node_id is

none:

6return

7if graph is

none:

8 graph =get_graph()

9 r_ids =

10 match = "

match (x)-[r]-(n) where id(x)=%s return r

" %(source_node_id)

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

12for d in

data:

13for tk,tv in

d.items():

14 relations =tv.relationships

15for r in

relations:

16if r.identity in

r_ids:

17continue

1819

20 from_id =0

21 to_id =0

22if r.start_node.identity ==source_node_id:

23 from_id =target_node_id

24 to_id =r.end_node.identity

25else

:26 from_id =r.start_node.identity

27 to_id =target_node_id

28 labels = ""

29if r.types() is

notnone:

30for la in

r.types():

31 labels+="

:" +la

32 fields =

33 fields_str = ""

34for k,v in

r.items():

%s:'%s'

" %(k,v))

36if len(fields) >0:

37 fields_str = ","

.join(fields)

38 fields_str = "

" %fields_str

39 match = "

match (x),(y) where id(x)=%s and id(y)=%s create (x)-[r%s%s]->(y) return id(r)

" %(from_id,to_id,labels,fields_str)

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

41if result is none or len(result)==0:

42return

false

43 match = "

match ()-[r]-() where id(r)=%s delete r

" %(r.identity)

44graph.run(match)

45return

true

4647

return

neo4j建立節點之間的關係

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

neo4j安裝 基於Neo4j的知乎關係爬蟲

首先交代一下爬蟲所用到的資料庫和環境 neo4j使用類似sql的查詢語言cypher,關於cypher的使用和簡單demo,可以參考cypher查詢語言 neo4j中的sql。當然,為了減少學習cypher的時間成本,我在python環境中安裝了py2neo,pip install py2neo。p...

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

在使用python操作neo4j資料庫的時候,經常會遇到重複的節點,需要將乙個節點的屬性複製到另乙個節點,之後將該節點刪除。def copy node properties source node id,target node id,graph none 將節點 source node id 的屬性...