將neo4j中乙個節點的全部關係移動到另乙個節點上面,採用先建立新關係,之後刪除原先的關係的方式
1def 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 的屬性...