節點的建立時很簡單的,只要用create建立名字和屬性即可。但是節點的關係建立有點複雜,因為需要考慮如何匹配到有關係的兩個節點,以及關係本身的屬性如何設定。這裡我簡單學一下如何建立節點之間的關係。
選擇的順序是由易到難,而不是場景的使用頻率。
語法:
create
(:)-
[:]->
(:)return
案例
create (fb1:facebookprofile1)-[like:likes]->(fb2:facebookprofile2)
結果
分析:create語句建立了1乙個關係,2個節點
2個節點只有lable而沒有屬性,也就是只有角色。比如建立了乙個警察標籤,乙個小偷標籤。沒有屬性就不知道是誰。這樣的關係其實是沒有現實意義的。
顯示的兩個節點自動分配了id,其實不代表任何real 實體。
語法
create
(:{})-
[:{}]
->(:{})
return #return子句是可選的。 如果我們想立即看到結果,那麼使用它。 否則,我們可以省略這個子句。
例項
create (video1:youtubevideo1)
-[movie:action_movies]->
(video2:youtubevideo2)
結果
解釋1,建立2個節點,1個關係
2,關係和節點都有屬性,和實體關聯。我們可以清楚看到電影之間關係。
語法
match (:),(:)
create
()-[:]->()
return #return子句是可選的。 如果我們想立即看到結果,那麼使用它。 否則,我們可以省略這個子句。
例項-需要先建立節點customer,creditcard
match (e:customer),(cc:creditcard)
create (e)-[r:do_shopping_with ]->(cc)
結果
分析為現有的兩個節點新增了關係。這種情況我們需要用match先找到兩個節點,然後在給兩個節點新增關係。如果沒有match就等同於新建節點。現有的節點被忽略
這個例子比較簡單,沒有匹配的規則,實際參考意義不大
我們先看乙個實際案例,縣建立了節點,後建立了關係。
注意點
1,建立節點和關係語句必須一次執行完,否則如上面例子所述,建立關係時()中的節點被認為是新的節點。
2,分號是乙個語句的結尾
3,同時執行時,keanu等作為節點的識別符號可以被下面識別,分開執行後面語句是認為新的節點。
create (thematrix:movie )
create (keanu:person )
create (carrie:person )
create (laurence:person )
create (hugo:person )
create (lillyw:person )
create (lanaw:person )
create (joels:person )
create
(keanu)-[:acted_in ]->(thematrix),
(carrie)-[:acted_in ]->(thematrix),
(laurence)-[:acted_in ]->(thematrix),
(hugo)-[:acted_in ]->(thematrix),
(lillyw)-[:directed]->(thematrix),
(lanaw)-[:directed]->(thematrix),
(joels)-[:produced]->(thematrix)
create (emil:person )
create (emil)-[:acted_in ]->(thematrix)
neo4j安裝 基於Neo4j的知乎關係爬蟲
首先交代一下爬蟲所用到的資料庫和環境 neo4j使用類似sql的查詢語言cypher,關於cypher的使用和簡單demo,可以參考cypher查詢語言 neo4j中的sql。當然,為了減少學習cypher的時間成本,我在python環境中安裝了py2neo,pip install py2neo。p...
neo4j 刪除重複節點
這裡的重複節點指的是乙個label下的部分節點,屬性a相同,其他屬性不相同 本文中的資料為舉例說明,實際資料不便展示,但表達的意思一致 1.neo4j中label為person的的節點有name和wechat兩個屬性,關係type為friend 2.在進行資料的清洗和預處理過程中,name對應的we...
更新neo4j節點資訊
將多個屬性的內容更新到節點上 def update by id id,graph,kwargs 更新節點的屬性 根據節點的id來更新節點的屬性,如果存在該屬性,則更新,如果不存在該屬性,則新增 if graph is none graph get graph if kwargs is none re...