Neo4j 使用cypher语言进行操作
Cypher语言是在学习Neo4j时用到数据库操作语言(DML),涵盖对图数据的增删改查
neo4j数据库简单除暴理解的概念:
Neo4j中不存在表的概念,只有两类:节点(Node)和关联(Relation),可以简单理解为图里面的点和边。 在数据查询中,节点一般用小括号(),关联用中括号[]。 当然也隐含路径的概念,是用节点和关联表示的,如:(a)-[r]->(b),表示一条从节点a经关联r到节点b的路径。
备份Neo4j的数据:
1)停掉数据库. 2)备份D:\Neo4J\neo4j-enterprise-1.9.1\data目录下graph.db目录中的所有内容. 3)在服务器上拷贝graph.db目录中的内容到新的服务器的相同目录中,启动即可.
Cypher的基本操作
1)创建节点
create (a) 创建空节点
create (a:Person) 创建标签(可以理解为类)为Person的节点
create (a:Person {name:‘Kaine‘,age:28}) 创建标签为Person,属性name值为Kaine,属性age值为28的节点
2)创建关联
match (a),(b) where a.name=‘Kaine‘ and b.name=‘Sharon‘ create (a)-[r]->(b) 创建a节点和b节点的路径,此时变量r即代表关联,它也可以有标签
3)查询关键字
match:用来匹配一定模式,可以是简单的节点、关联,也可以是复杂的路径 where:用来限定条件,一般是限定match中的出现变量的属性 return:返回结果 start:开始节点,一般用于有索引的节点或者关联
match ... where ... return ... 如果match有多个对象,用逗号隔开; 如果where有多个条件,用and连接; 如果return有多个变量,用逗号隔开
4)查询举例讲解
match (n) return n 查询所有节点及关联 match (a)-[r]->(b) where a.name=‘Kaine‘ return a,b 查询属性name的值是Kaine的节点,及其所有关联节点 match (a)-[*1..3]->(b) where a.name=‘Kaine‘ return a,b 查询属性name值是Kaine的节点,及其所有距离为1到3的关联节点, match (a)-[*2]->(b) where a.name=‘Kaine‘ and not (a)-[*1]->(b) return a,b 查询属性name的值是Kaine的节点,及其所有距离为2并且去除距离为1的节点。 (在计算好友的好友时会用到,即如果a、b、c三个人都认识,如果仅计算跟a距离为2的人的时候会把b、c也算上,因为a->b->c,或者a->c->b都是通路) 注:关联的中括号内数字的含义 n 距离为n ..n 最大距离为n n.. 最小距离为n m..n 距离在m到n之间
a.创建
CREATE (id:label {key:value}) id: 为节点添加一个唯一ID,不设置则系统自动设置一个,不设置时是 CREATE (:label... label: 标签,生命节点类型 {}: 属性定义,key/value格式
b.关系
-[role:label {roles: ["Neo"]}]-> -- 表示一个无指向的关系 --> 表示一个有指向的关系 [] 能够添加ID,属性,类型等信息
另看:http://blog.csdn.net/wangweislk/article/details/47661863
按id查询(这里的id是系统自动创建的): start n=node(20) return m; 查询所有节点: start n=node(*) return n; 查询属性,关系: start n=node(9) return n,n.name,n.ID,n.level; //查看指定节点,返回需要的属性 start n=node(*) match (n)-[r:SubClassOf]->m return m,n,n.name,n.ID,r; //查找指定关系 按关系查询多个节点: start a = node(14) match b-[r]<->a return r,b; start a = node(0) match c-[:KNOWS]->b-[:KNOWS]->a return a,b,c; //查找两层KNOWS关系的节点 start a = node(21) match b-[*]->a return a,b; //查找所有与a节点有关系的节点 使用Where条件进行查询:(不用建立Index也可以使用) start n=node(*) where n.name="Activity" return n; 并且可以使用特定符号: start n=node(*) where n.ID?="A*" return n; start n=node(*) where HAS(n.type) return n,n.name,n.ID,n.type; //如果存在属性type,并且以A开头,就输出节点。 配置文件自动建立索引: 修改conf目录下的neo4j.properties文件内容如下,重启Neo4J,对重启后新建的Node生效。 # Enable auto-indexing for nodes, default is false node_auto_indexing=true # The node property keys to be auto-indexed, if enabled node_keys_indexable=name,ID # Enable auto-indexing for relationships, default is false relationship_auto_indexing=true # The relationship property keys to be auto-indexed, if enabled relationship_keys_indexable=KNOWS,SubClassOf 建立索引后可以用node_auto_index按属性值查询: start n=node:node_auto_index(name="C") return n,n.name; 修改属性值: start a = node(*) where a.name="a" set a.name="A" return a,a.name ; start n=node(0) set n.name="Root",n.ID="001" ; //给默认的根节点添加name,ID属性,便于查询。 删除: 删除所有节点和关系: START n=node(*) match n-[r]-() delete n,r; 删除所有节点以上方法过时,后面版本将被遗弃-推荐使用如下方法 MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r
图形数据库关系
一 概念
节点:
(a) //actors
(m) //movies
( ) //some anonymous nod
关系:
-[r]-> //a relationship referred to as "r" (a)-[r]->(m) //actors having a relationship referred to as "r" to movies -[:ACTED_IN]-> //the relationship type is ACTED_IN (a)-[:ACTED_IN]->(m) //actors that ACTED_IN some movie (d)-[:DIRECTED]->(m) //directors that DIRECTED some movie
属性:
(m {title:"The Matrix"}) //Movie with a title property
(a {name:"Keanu Reeves",born:1964}) //Actor with name and born property
(a)-[:ACTED_IN {roles:["Neo"]}]->(m)
//Relationship ACTED_IN with roles property (an array of character names)
标签:
(a:Person) //a Person (a:Person {name:"Keanu Reeves"}) //a Person with properties (a:Person)-[:ACTED_IN]->(m:Movie) //a Person that ACTED_IN some movie
二 neo4j使用的查询语言 cypher
http://www.uml.org.cn/sjjm/201203063.asp
查询语言包含
START:在图中的开始点,通过元素的ID或所以查找获得。
MATCH:图形的匹配模式,束缚于开始点。
WHERE:过滤条件。
RETURN:返回所需要的。
相关推荐
随着版本的更新,Cypher语言会不断有新的特性和改进,同时某些旧特性和用法可能会被废弃。了解不同版本间的语言发展变化,对于保持代码的兼容性和利用新特性提高开发效率至关重要。 #### 8. 关键字词汇表(Glossary...
这个压缩包包含的是 Neo4j 社区版的4.2.1版本,适合个人学习、开发和小型项目使用。 1. **什么是图形数据库**:不同于传统的SQL关系型数据库,图形数据库以节点、边和属性三元组的形式存储数据,特别适合处理具有...
2. **Cypher查询语言**:Neo4j的查询语言是Cypher,一种声明式、图形化语言,用于检索、更新和操作图形数据。其语法简洁直观,易于学习,适合处理复杂的图查询。 **Neo4j 社区版特点** 1. **开源和免费**:社区版...
1. **Cypher查询语言**: Neo4J使用Cypher进行查询,这是一种声明式的图查询语言。例如,创建一个节点`CREATE (n:Person {name:'Alice'})`,或者查找所有名为Alice的节点`MATCH (n:Person {name:'Alice'}) RETURN n`...
5. **Cypher查询语言**:Neo4j的主要查询语言是Cypher,它是一种声明式的图形查询语言。例如,`CREATE (a:Person {name:'Alice'})`会创建一个名为Alice的Person节点,而`MATCH (a:Person)-[:FRIEND]->(b) RETURN b....
运行过程中,你可以使用Cypher查询语言与Neo4j交互。Cypher是一种声明式语言,简洁易读,专门用于图形数据操作。例如,创建一个新节点并连接两个节点的语句如下: ```cypher CREATE (:Person {name: 'Alice'})-[:...
1. **Cypher查询语言**:Cypher是一种声明式、图形化的查询语言,用于在Neo4j中检索、修改和操作数据。它的语法简洁明了,使得对图数据的操作变得直观且易于理解。 2. **ACID事务**:Neo4j支持原子性、一致性、隔离...
Neo4j是这个领域的领头羊,它提供强大的查询语言Cypher,使得查询和操作图形数据变得直观且高效。 **安装步骤:** 1. **下载与解压**:由于从官网下载速度可能较慢,你可以通过其他途径获取"neo4j-community-3.4.9...
手册详细解析了如何创建、查询、更新和删除这些元素,以及如何使用Cypher查询语言来操作图数据。 4. **Cypher查询语言**:Cypher是Neo4j的声明式图形查询语言,类似于SQL但专为图形数据设计。手册包含了Cypher的...
Neo4j是一款强大的开源图数据库管理系统,主要用于存储和查询复杂关系数据。...通过熟悉Cypher语言,理解和应用图数据模型,以及合理配置和优化,你将能够充分利用 Neo4j 处理和分析复杂的关联数据。
Neo4j支持Cypher查询语言,这是一种声明式的查询语言,用于创建、读取、更新和删除图数据。 "neo4j-community-3.1.2"是具体版本号,表示这是Neo4j的3.1.2社区版本。每个版本都可能包含性能改进、新功能和修复的错误...
《深入理解Neo4j企业版2.3.0-M03:从Unix平台的安装到实战应用》 Neo4j是一款高性能的图形数据库,尤其在处理复杂关系...在使用过程中,深入了解其特性和配置,结合Cypher查询语言,将有助于更好地挖掘数据的价值。
6. **操作**:Neo4j提供了Cypher查询语言,它简洁易读,用于创建、查询和更新图数据。你可以通过Web界面的Cypher查询框执行Cypher语句,或者使用`bin/neo4j-shell`命令行工具。 7. **安全管理**:在生产环境中,...
以上就是关于“neo4j-community-3.1.3-unix.tar.gz”压缩包的详细内容,包括Neo4j的基本概念、图数据库的优势、Cypher查询语言的简介,以及安装和使用的基本步骤。掌握这些知识,你就能有效地利用 Neo4j 处理复杂的...
在初次安装或启动Neo4j时,你可以通过这些凭证访问Web控制台,进行数据库管理和操作。默认情况下,为了安全起见,你应该尽快更改这些默认凭据。 Neo4j的标签“neo4j社区版”进一步确认了我们关注的焦点,即非商业...
5. **图形数据建模**:理解如何在Neo4j中表示实体(节点)和关系,并学会如何使用Cypher创建、查询和操作这些元素,是使用Neo4j的关键。 6. **应用集成**:Neo4j可以通过各种方式与应用程序集成,如使用Java API...
Neo4j使用Cypher作为其主要的查询语言,它具有简洁、直观的语法,适合表达图数据的操作。例如,`MATCH (n:Person)-[r:KNOWS]->(m) RETURN n,m`会找到所有认识的人,并返回他们。 9. **监控和性能**: Neo4j提供了...
总结,Neo4j社区版4.2.0在Windows上的安装和使用涉及到多个方面,包括基本的配置、启动操作、图形化管理、Cypher查询、知识图谱构建以及性能调优。理解并掌握这些知识点,将有助于你在实际项目中充分利用Neo4j的强大...
尽管此版本较旧,但它仍然是理解Neo4j发展历程的一个重要里程碑,包含了一些基本特性的首次引入,比如对Cypher查询语言的优化和支持。 5. **Cypher查询语言**:Cypher是Neo4j的声明式图形查询语言,简洁易读,专门...
7. **Cypher查询语言**:Neo4j提供了直观的Cypher查询语言,用于查询和操作数据。Cypher是一种声明式语言,类似于SQL,但针对图形数据进行了优化,如`MATCH`语句用于找到特定的图模式。 8. **图遍历与索引**:Neo4j...