Neo4j - Cypher基礎(chǔ)

1. 創(chuàng)建一個節(jié)點

CREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })
  • CREATE 創(chuàng)建數(shù)據(jù)
  • () 表示節(jié)點
  • ee:Person,ee是變量名,Person是label名稱
  • {} 是節(jié)點屬性

2. 查找一個節(jié)點

MATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;
  • MATCH指定一個節(jié)點或關(guān)系的模式
  • (ee:Person) 單一節(jié)點,Person為label,把值給變量ee
  • WHERE 來限制結(jié)果
  • ee.name = "Emil" 比較 name 的值和 "Emil"
  • RETURN 用于返回特定的結(jié)果

3. 創(chuàng)建多個節(jié)點和關(guān)系

MATCH (ee:Person) WHERE ee.name = "Emil"
CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
(ir:Person { name: "Ian", from: "England", title: "author" }),
(rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
(ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
(ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
(js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
(ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
(rvb)-[:KNOWS]->(ally)

在同一個上下文中,變量名(如ee,js)用于關(guān)系中節(jié)點的引用,其中ee是通過MATCH獲得的node,js是新創(chuàng)建的node。

CREATE (節(jié)點1), (節(jié)點2), (節(jié)點3), (節(jié)點4), 
             (節(jié)點1)-[關(guān)系1]->(節(jié)點2),
             (節(jié)點2)-[關(guān)系2]->(節(jié)點3),
             ......

4. 模式匹配

模式匹配用于描述要在圖中尋找的內(nèi)容

MATCH (ee:Person)-[:KNOWS]-(friends)
WHERE ee.name = "Emil" RETURN ee, friends
  • MATCH 語句描述了已知節(jié)點到待找節(jié)點的關(guān)系模式
  • (ee) 模式始于Person (由 WHERE 提供)
  • -[:KNOWS]- 匹配 "KNOWS" 關(guān)系 (任意方向)
  • (friends) 會和 Emil 的 friends 綁定

5. 推薦

模式匹配能用來推薦,Johan正在學沖浪,他想找一個會沖浪的新朋友。

MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
WHERE js.name = "Johan" AND surfer.hobby = "surfing"
RETURN DISTINCT surfer
  • () 空括號忽略這些節(jié)點
  • DISTINCT 因為有多于一條的路徑符合模式
  • surfer 包含了 Allison, 朋友的朋友而且會沖浪

6. 分析

如果你想了解查詢是如何進行的,可以在查詢語句之前加上EXPLAINPROFILE。

PROFILE MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
WHERE js.name = "Johan" AND surfer.hobby = "surfing"
RETURN DISTINCT surfer

Refs

本文來自 Neo4j 的 :play cypher,是cypher這款圖查詢語言的入門教程。
更多Cypher的內(nèi)容可以參考 http://neo4j.com/docs/cypher-refcard/3.0/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容