Cypher是一種圖數據庫查詢語言,表現力豐富,查詢效率高,其地位和做用與關係型數據庫中的SQL語言至關。php
Cypher經過模式匹配圖數據庫中的節點和關係,來提取信息或者修改數據。sql
Cypher語句中容許使用變量,用來表示命名、綁定元素和參數。數據庫
Cypher語句能夠對節點、關係、標籤和屬性進行建立、更新和刪除操做。設計模式
Cypher語句能夠管理索引和約束。nosql
一、節點語法:採用一對圓括號來表示節點。如:()
、(foo)
函數
二、關係語法:使用一對短橫線表示無方向關係,有方向加箭頭。如:-[role]-
、-[:ACTED_IN]->
、-[role:ACTED_IN]->
學習
三、模式語法:將節點和關係的語法組合在一塊兒能夠表達模式。如:(keanu: Person: Actor {name: "Keanu Rteves"}-[role:ACTED_IN {roles: ["Neo"]}]->{matrix: Movie {title: "The Matrix"}})
.net
Java嵌入式開發模式,Java開發人員徹底能夠直接在代碼中調用Neo4j的API,並將對Neo4j數據庫的操做嵌入到Java代碼中;設計
驅動開發模式,使用.net、JavaScript、Python、php等集成的驅動包或驅動庫就能夠與Neo4j相互對話code
CREATE (n {name:"張三"}) //建立節點並給節點分配一個屬性
CREATE ({name:"李四"})-[r:have]->({bookname:"設計模式"}) //建立一個關係,給兩個節點創建關係指定關係類型、方向和綁定一個變量
MATCH (n{name:"張三"}) RETURN n //根據屬性匹配節點信息
MATCH (n:Person)-[:FRIEND]->(m:Person) WHERE n.name = '張三' //匹配節點時指定標籤、屬性和關係類型
MATCH (n)-[k:KNOWS]->(f) WHERE k.since < 2000 RETURN f //根據關係屬性過濾
MATCH (n {name:'張三'}) SET n={age:20} //修改節點信息,覆蓋節點屬性
MATCH (n {name:'張三'}) SET n+={age:20} RETURN n //該語句不會刪除掉name屬性,而是在節點中新增age屬性
MATCH (n{name:'張三'}) remove n.age RETURN n //刪除節點屬性
MATCH (a)-[r:KNOWS]->(b) DELETE r,b //刪除一個節和關係
CREATE INDEX ON :Person(name) //爲"Person"標籤的name屬性建立索引
DROP CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE //建立節點屬性惟一約束