Cypher是一种图数据库查询语言,表现力丰富,查询效率高,其地位和作用与关系型数据库中的SQL语言相当。
Cypher通过模式匹配图数据库中的节点和关系,来提取信息或者修改数据。
Cypher语句中允许使用变量,用来表示命名、绑定元素和参数。
Cypher语句可以对节点、关系、标签和属性进行创建、更新和删除操作。
Cypher语句可以管理索引和约束。
1、节点语法:采用一对圆括号来表示节点。如: ()
、 (foo)
2、关系语法:使用一对短横线表示无方向关系,有方向加箭头。如: -[role]-
、 -[:ACTED_IN]->
、 -[role:ACTED_IN]->
3、模式语法:将节点和关系的语法组合在一起可以表达模式。如: (keanu: Person: Actor {name: "Keanu Rteves"}-[role:ACTED_IN {roles: ["Neo"]}]->{matrix: Movie {title: "The Matrix"}})
Java嵌入式开发模式,Java开发人员完全可以直接在代码中调用Neo4j的API,并将对Neo4j数据库的操作嵌入到Java代码中;
驱动开发模式,使用.net、JavaScript、Python、php等集成的驱动包或驱动库就可以与Neo4j相互对话
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 //创建节点属性唯一约束