開源圖形數據庫Neo4j使用 php開發


先看看它的示例數據

打開 Neo4j Browser

:play movie graph

寫代碼,然后點play執行

 

 

Cypher, the graph query language.Neo4j提供了Cypher查詢語言,它類似於關系型數據庫中的SQL語句。

(1) 創建一個節點:create (n: Person {name: "Dennis"}) return n

 

插入一個Person類別的節點,且這個節點有一個屬性name,屬性值為Andres

CREATE (n:Person { name : 'Andres'});

 

 

插入邊。插入一條a到b的有向邊,且邊的類別為Follow

MATCH (a:Person),(b:Person) WHERE a.name = 'Node A' AND b.name = 'Node B' CREATE (a)-[r:Follow]->(b);

 

(2) 查詢所有的Person節點:match (n: Person) return n

 

 

 

更新節點。更新一個Person類別的節點,設置新的name。

MATCH (n:Person { name: 'Andres' }) SET n.name = 'Taylor';

 

1.Create: insert movie data into the graph

create語句用於Insert graph data

 

 

 

2.Find: retrieve individual movies and actors

如:Find the actor named "Tom Hanks".

MATCH (tom {name: "Tom Hanks"}) RETURN tom

查詢名為"Dennis"的Person節點:match (n: Person) where n.name="Dennis" return n

 

Find 10 people:

MATCH (people:Person) RETURN people.name LIMIT 10

 

List all Tom Hanks movies

MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) RETURN tom,tomHanksMovies

 

Tom Hanks' co-actors

MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) RETURN coActors.name

 

How people are related to "Cloud Atlas"

MATCH (people:Person)-[aaa]-(:Movie {title: "Cloud Atlas"}) RETURN people.name, Type(aaa)

 

3.Query: discover related actors and directors

 

MATCH p=shortestPath( (bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"}) ) RETURN p

 

MATCH (ms:Person { name:'Andres' }),(cs:Person { name:'Taylor' }), p = shortestPath((ms)-[r:Follow]-(cs)) RETURN p;

 

 

 

Delete all Movie and Person nodes, and their relationships:

MATCH (n) DETACH DELETE n

 

 

刪除節點和與其相連的邊。

MATCH (n:Person { name:'Andres' }) DETACH DELETE n;

 

刪除邊。

MATCH (a:Person)-[r:Follow]->(b:Person) WHERE a.name = 'Andres' AND b.name = 'Taylor' DELETE r;

 

 

:server connect命令用於連接

 

  • 查詢兩個節點之間的關系。

MATCH (a:Person { name:'Andres' })-[r]->(b:Person { name:'Taylor' }) RETURN type(r);

 

  • 查詢一個節點的所有Follower。

MATCH (:Person { name:'Taylor' })-[r:Follow]->(Person) RETURN Person.name;

 

  • 查看所有的節點數和邊數

MATCH (n) RETURN count(n); MATCH ()-->() RETURN count(*);

 

適合存儲”修改較少,查詢較多,沒有超大節點(常見於大V)“的圖數據。Arangodb也許是一個不錯的考慮對象,根據其官網的說明,Arangodb不僅具有一般圖形數據庫的優點,而且在各種操作的速度上領先於Neo4j

用php開發

https://neo4j.com/developer/language-guides/

https://neo4j.com/developer/php/

 

 

https://neo4j.com/developer/example-project/

https://github.com/neo4j-examples?q=movies

 

 

 

dbms.security.auth_enabled=false

 

關系也可以有屬性,而且有type類型。

 

用的這個

https://github.com/elesos/neo4jphp

 

[labels] => Array ( [0] => Person )

 

 

 

 

 

有沒有知道如何多數據庫切換?

Active database: graph.db


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM