转载

3.3-Cypher语言及语法使用

Cypher是一种图数据库查询语言,表现力丰富,查询效率高,其地位和作用与关系型数据库中的SQL语言相当。

Cypher具备的能力:

  • Cypher通过模式匹配图数据库中的节点和关系,来提取信息或者修改数据。

  • 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"}})

Cypher处理值支持的类型:

  • 数值、字符串、布尔、节点、关系、路径、映射Map、列表List

Cypher查询语言中的所有函数:

  • 断言(Predicate)函数、标量(Scalar)函数、列表(List)函数、数学(Math)函数、字符串(String)函数、自定义函数

Neo4j程序开发模式:

  • Java嵌入式开发模式,Java开发人员完全可以直接在代码中调用Neo4j的API,并将对Neo4j数据库的操作嵌入到Java代码中;

  • 驱动开发模式,使用.net、JavaScript、Python、php等集成的驱动包或驱动库就可以与Neo4j相互对话

常用的语句

  • 1.创建节点语句

CREATE (n {name:"张三"}) //创建节点并给节点分配一个属性

CREATE ({name:"李四"})-[r:have]->({bookname:"设计模式"}) //创建一个关系,给两个节点建立关系指定关系类型、方向和绑定一个变量

  • 2.查询语句

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 //根据关系属性过滤

  • 3.节点更新和删除

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 //删除一个节和关系

  • 4.索引和约束

CREATE INDEX ON :Person(name) //为"Person"标签的name属性创建索引

DROP CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE //创建节点属性唯一约束

原文  https://juejin.im/post/5cf9aea86fb9a07ee0630812
正文到此结束
Loading...