初探Neo4J中的Cypher

2021-07-02 03:41:55 字數 1161 閱讀 7663

由於rdf資料庫需要,需要調研圖形資料庫,選擇了neo4j進行嘗試,發現它包含了乙個名為「cypher」的操作語言,使用了一下感覺非常不錯,所有有寫點東西的必要。

從官網上盜個圖:

其實,這個圖也就標識了cypher語言的基本功能,節點a到節點b,關係是likes,其操作的方法與sql的select一樣選擇符合某種條件的實體,由此強烈建議大家使用網頁版進行熟悉操作,比較直觀,可以直接得到圖形。

閒話少說,我們姑且成上面的為萬能公式,該萬能公式大體上分為兩個部分()與,其中()表示某個節點可以當作是關聯式資料庫中的某條記錄或者rdf中的實體,表是某種關係,從而建立了實體與實體之間的關係;

match(a) return a,含義表示返回所有的節點,其中a就是定義變數的方式;

match(a:person) return a,返回所有person類別的節點,其中person型別在節點建立的過程中進行指定;

match(a:person:teacher) return a,返回所有teacher同時屬於person類別的節點(例子有點不恰當),從這個例子我們可以看出例子我們可以看出只要你想的到多少類別都可以;

除此之外,我們可以通過create建立節點;

create (:person ),建立乙個名為李晨的節點;

create (fan:person ) return fan,建立乙個名為范冰冰的節點,並返回,從這個裡面我們可以看到型別前面可以變數,需要說明的是即使你不加型別依然可以進行宣告;

match(li:person ) match(fan:person )  create (fan) -[:搞定]->(li) return fan,li,完成了關係,范冰冰 搞定 李晨;

最後,還需要說明的乙個是shortestpath,顧名思義查詢最短路徑,熟悉rdf的大概都能了解relfinder功能,兩者功能類似,白話來講就是,找到乙個小a和小b,他們之間有沒有關係呢,就是通過shortestpath方法來實現,起就是都過關係來規定幾度關係來進行推斷;

match(a:person ) match(b:person )  p= shortpath((a) -[:朋友*..2]->(b)) return a,b,p,返回所有小a和小b之間能產生二度以內好友關係的可能路徑。

neo4j 查詢cypher話語

engine.execute start n node people return n params skip和limit的數字引數12 345mapparams new hashmap params.put s 1 params.put l 1 executionresult result eng...

Cypher查詢語言 Neo4j中的SQL(3)

如果需要從查詢的資料的圖中過濾,可以在查詢語句中新增where子句。圖 可以使用boolean操作符and 和 or 或者也可以使用not 函式。查詢 start n node 3,1 where n.age 30 and n.name tobias ornot n.name tobias retu...

Cypher查詢語言 Neo4j中的SQL(4)

查詢中的返回部分,返回途中定義的感興趣的部分。可以為節點 關係或其上的屬性。圖返回乙個節點,在返回語句中列出即可。查詢 start n node 2 return n 結果 查詢 start n node 1 match n r knows c return r 結果 查詢 start n node...