Neo4j-Cypher语法

CREATE

create-创建节点或关系

// 创建节点n, label为Person, 有两个属性name和born, 通过return语句返回
CREATE (n:Person { name:'Tom Hanks', born:1956 }) RETURN n

// 创建a到b间的关系为DIRECTED, 并返回关系r, r的id, r的type
MATCH (a:Person),(b:Movie)
WHERE a.name = 'Robert Zemeckis' AND b.title = 'Forrest Gump'
CREATE (a)-[r:DIRECTED]->(b)
RETURN r, id(r), type(r)

// 创建a到b间的关系为ACTED_IN, 该关系有属性roles
MATCH (a:Person), (b:Person) 
WHERE a.name='Tom Hanks' AND b.title='Forrest Gump' 
CREATE (a)-[r:ACTED_IN { roles:['Forrest'] }]->(b) 
RETURN r, id(r), type(r)

// Hello World!
// 创建节点database, message, 关系r; 并由节点database通过关系r指向节点message
CREATE (database:Database {name:"Neo4j"})-[r:SAYS]->(message:Message {name:"Hello World!"}) 
RETURN database, message, r

MATCH

match-匹配节点或关系, 通过与return语句连用

// 查询整个图形数据库
match(n) return n

// 查询born属性小于1952的节点
MATCH (n) WHERE n.born < 1952 RETURN n

// 查询具有指定label的节点
MATCH (n:Movie) RETURN n, labels(n)

// 查询所有和Movie标签有关系的节点
match(n)--(m:Movie) 
return n

// 查询标签为Person,name为Tom Hanks指向的所有节点
MATCH (:Person { name: 'Tom Hanks' })-->(movie) RETURN movie;

// 查询节点n1通过关系r指向节点n2的所有节点和关系, 并限制返回记录数为25
MATCH (n1)-[r]->(n2) RETURN r, n1, n2 LIMIT 25

MERGE

merge-功能相当于create和match; 模式存在时, 则匹配该模式; 模式不存在时, 则创建该模式; 可以在merge字句后指定on create和on merge字句

// 当节点Person存在时, 则返回该节点; 否则创建该节点并返回
MERGE (michael:Person { name: 'Michael Douglas' })
RETURN michael;

// 当节点keanu存在时, 返回该节点; 否则创建该节点, 并在创建该节点时指定keanu的created属性
MERGE (keanu:Person { name: 'Keanu Reeves' }) 
ON CREATE SET keanu.created=timestamp()
RETURN keanu;

实体相关函数

id()-获取节点或关系的id

// 返回label为Person, name为Tom Hanks的出度关系r的id
MATCH (:Person { name: 'Tom Hanks' })-[r]->(movie)
RETURN id(r);

type()-获取关系的类型

// 返回label为Person, name为Tom Hanks的出度关系r的关系类型
MATCH (:Person { name: 'Tom Hanks' })-[r]->(movie)
RETURN type(r);

labels()-获取节点标签

// 返回label为Person, name为Tom Hanks的出度关系关节的节点movie的标签
MATCH (:Person { name: 'Tom Hanks' })-[r]->(movie)
RETURN labels(movie);

keys()-获取节点或关系的属性key

MATCH (a)
WHERE a.name = 'Alice'
RETURN keys(a)

properties()-获取节点或关系的属性property

// 创建id为p, label为Person, 包含属性name,city的节点, 并返回该节点的所有属性
CREATE (p:Person { name: 'Stefan', city: 'Berlin' })
RETURN properties(p)

Cypher笔记(一)
Cypher基础入门
Neo4j系列- Cypher入门(四)
Neo4j的查询语法笔记(二)

你可能感兴趣的:(Neo4j,Cypher)