前置条件:已完成Neo4j数据库安装部署,命令行启动数据库。

Neo4j图数据库基础操作_Neo4j

1.节点创建

CREATE (n:Person {name:'John'}) RETURN n
  • 1.

CREATE是创建操作,Person是标签,代表节点的类型。花括号{}代表节点的属性,属性类似Python的字典。这条语句的含义就是创建一个标签为Person的节点,该节点具有一个name属性,属性值是John。

继续创建更多人物节点:

CREATE (n:Person {name:'Sally'}) RETURN n;
CREATE (n:Person {name:'Steve'}) RETURN n;
CREATE (n:Person {name:'Mike'}) RETURN n;
CREATE (n:Person {name:'Liz'}) RETURN n;
CREATE (n:Person {name:'Shawn'}) RETURN n;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

创建地区节点:

CREATE (n:Location {city:'Miami', state:'FL'});
CREATE (n:Location {city:'Boston', state:'MA'});
CREATE (n:Location {city:'Lynn', state:'MA'});
CREATE (n:Location {city:'Portland', state:'ME'});
CREATE (n:Location {city:'San Francisco', state:'CA'});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

2.关系创建

MATCH (a:Person {name:'Liz'}),  
      (b:Person {name:'Mike'})  
MERGE (a)-[:FRIENDS]->(b)
  • 1.
  • 2.
  • 3.

这里的方括号[]即为关系,FRIENDS为关系的类型。注意这里的箭头 -->是有方向的,表示是从a到b的关系。

关系可以增加属性:

MATCH (a:Person {name:'Shawn'}),  
      (b:Person {name:'Sally'})  
MERGE (a)-[:FRIENDS {since:2001}]->(b)
  • 1.
  • 2.
  • 3.

使用下面的代码增加更多人物关系:

MATCH (a:Person {name:'Shawn'}), (b:Person {name:'John'}) MERGE (a)-[:FRIENDS {since:2012}]->(b);
MATCH (a:Person {name:'Mike'}), (b:Person {name:'Shawn'}) MERGE (a)-[:FRIENDS {since:2006}]->(b);
MATCH (a:Person {name:'Sally'}), (b:Person {name:'Steve'}) MERGE (a)-[:FRIENDS {since:2006}]->(b);
MATCH (a:Person {name:'Liz'}), (b:Person {name:'John'}) MERGE (a)-[:MARRIED {since:1998}]->(b);
  • 1.
  • 2.
  • 3.
  • 4.

建立人物与地点的关系:

MATCH (a:Person {name:'Liz'}), (b:Location {city:'Boston'}) MERGE (a)-[:BORN_IN {year:1981}]->(b);
MATCH (a:Person {name:'Mike'}), (b:Location {city:'San Francisco'}) MERGE (a)-[:BORN_IN {year:1960}]->(b);
MATCH (a:Person {name:'Shawn'}), (b:Location {city:'Miami'}) MERGE (a)-[:BORN_IN {year:1960}]->(b);
MATCH (a:Person {name:'Steve'}), (b:Location {city:'Lynn'}) MERGE (a)-[:BORN_IN {year:1970}]->(b);
  • 1.
  • 2.
  • 3.
  • 4.

完成效果:

Neo4j图数据库基础操作_Neo4j_02

注意:可以使用match(n) return n命令,展示目前所有数据。

3.图数据库基础查询

(1)查询所有对外有关系的节点

MATCH (a)-->() RETURN a
  • 1.

(2)查询所有有关系的节点

MATCH (a)--() RETURN a
  • 1.

(3)查询所有对外有关系的节点,以及关系类型

MATCH (a)-[r]->() RETURN a.name, type(r)
  • 1.

(4)查询所有特定关系的节点

MATCH (n)-[:MARRIED]-() RETURN n
  • 1.

(5)创建节点的同时建立关系

CREATE (a:Person {name:'Todd'})-[r:FRIENDS]->(b:Person {name:'Carlos'})
  • 1.

(6)查找关系的关系,如某人朋友的朋友

MATCH (a:Person {name:'Mike'})-[r1:FRIENDS]-()-[r2:FRIENDS]-(friend_of_a_friend) RETURN friend_of_a_friend.name AS fofName
  • 1.

(7)增加/修改节点的属性

MATCH (a:Person {name:'Liz'}) SET a.age=34;
MATCH (a:Person {name:'Shawn'}) SET a.age=32;
MATCH (a:Person {name:'John'}) SET a.age=44;
MATCH (a:Person {name:'Mike'}) SET a.age=25;
  • 1.
  • 2.
  • 3.
  • 4.

(8)删除节点属性

MATCH (a:Person {name:'Mike'}) SET a.test='test'
MATCH (a:Person {name:'Mike'}) REMOVE a.test
  • 1.
  • 2.

(9)删除节点

MATCH (a:Location {city:'Portland'}) DELETE a
  • 1.

(10)删除有关系的节点

MATCH (a:Person {name:'Todd'})-[rel]-(b:Person) DELETE a,b,rel
  • 1.

(11)删除数据库中的图【不要轻易使用!】

MATCH (n) DETACH DELETE n
  • 1.