cypher学习1--核心概念

Introduction - Cypher Manual (neo4j.com)

介绍

Cypher 是 Neo4j 的声明式查询语言,允许用户释放属性图数据库的全部潜力。

 编写查询实际上就像在图形中的数据中绘制模式一样。 换言之,节点及其关系等实体在视觉上内置于查询中。

这使得 Cypher 成为一种高度直观的读写语言。(nodes)-[:CONNECT_TO]→(otherNodes)

查询

核心概念

Neo4j 图形数据库由三个核心实体组成:节点、关系和路径。 Cypher® 查询的构造是为了在图中匹配或创建这些实体。 因此,基本了解图形数据库中的节点、关系和路径对于构造 Cypher 查询至关重要。

以下示例使用 MATCH 和 RETURN 子句来查找并返回所需的图形模式。 

节点

Neo4j 图形数据库中的数据实体称为节点。 节点在 Cypher 中使用括号引用。()

 

MATCH (n:Person {name:'Anna'})
RETURN n.born AS birthYear
-标签 :Person
-属性 {name:'Anna'}
-变量 n 允许在后续子句中引用指定的节点

关系

图中的节点可以通过关系连接。 关系必须具有起始节点、结束节点和一种类型。 关系在Cypher中用箭头(例如)表示关系的方向。-->

MATCH (:Person {name: 'Anna'})-[r:KNOWS WHERE r.since < 2020]->(friend:Person)
RETURN count(r) As numberOfFriends

虽然节点可以有多个标签,但关系只能有一种类型。

路径

图中的路径由连接的节点和关系组成。 探索这些路径是Cypher的核心。

shortestPath() 函数来查找两个节点之间的最短路径

MATCH p=shortestPath((:Person {name: 'Anna'})-[:KNOWS*1..10]-(:Person {nationality: 'Canadian'}))

p 是一个变量,用来代表整个路径。

shortestPath() 函数表示我们要找到最短路径。

在括号中的模式 (:Person {name: 'Anna'})-[:KNOWS*1..10]-(:Person {nationality: 'Canadian'}) 定义了路径的模式:

  • (:Person {name: 'Anna'}):这是路径的起始节点,其标签为 Person,属性 name 为 'Anna'。
  • [:KNOWS*1..10]:这是关系的模式,表示我们可以沿着任意数量的 KNOWS 关系移动,最小为 1,最大为 10。
  • (:Person {nationality: 'Canadian'}):这是路径的结束节点,其标签为 Person,属性 nationality 为 'Canadian'。
  • RETURN p:这是返回语句,指示将找到的路径返回给用户

这个查询将返回从姓名为 'Anna' 的人开始,到国籍为 'Canadian' 的人之间的最短路径。

 

 

 

 

neo4j与cypher相关信息

Neo4j 由两个版本组成:商业企业版和社区版,    cypher使用在一些关键方面有所不同

Neo4j 的全新安装包括两个数据库:

  • system- 上述系统数据库,包含有关DBMS和安全配置的元数据。

  • neo4j- 默认数据库,使用 config 选项命名。dbms.default_database=neo4j

Transaction

所有 Cypher 查询都在事务中运行。 通过更新查询完成的修改由事务保存在内存中,直到提交为止,此时更改将保留到磁盘上,并对其他事务可见。 

简言之,更新查询总是要么完全成功,要么根本不成功。(因此,进行大量更新的查询会使用大量内存,因为事务在内存中保存更改。)

 

Neo4j 中的事务可以是显式的,也可以是隐式的。  driver调用不同API

 

posted @ 2024-04-23 17:35  zzl14  阅读(112)  评论(0)    收藏  举报