neo4j初次使用学习简单操作-cypher语言使用

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:返回所需要的。

分享网站:http://www.cnblogs.com/rongyux/p/5537028.html

时间: 2024-11-07 21:46:58

neo4j初次使用学习简单操作-cypher语言使用的相关文章

Cypher语言学习笔记

一.简介 Cypher语言是在学习Neo4j时用到数据库操作语言(DML),涵盖对图数据的增删改查,跟SQL有较大不同,本文仅记录一些要点备查 二.详述 1.基本概念 Neo4j中不存在表的概念,只有两类:节点(Node)和关联(Relation),可以简单理解为图里面的点和边,在数据查询中,节点一般用小括号(),关联用中括号[].当然也隐含路径的概念,是用节点和关联表示的,如:(a)-[r]->(b),表示一条从节点a经关联r到节点b的路径 2.创建语句 1)创建节点 create (a) 创

Neo4j数据库——Cypher语言初学

任何数据库基础的都是增删改查四种功能,而Neo4j使用的Cypher语言一样如此.Cypher是一种很好处理图数据库的语言,下面就从几个基本功能来学习他的基本用法.就以我们做的电影智能问答系统来做示范. 一 创建节点 创建节点有两种方式,一种是create方式,一种是用merge方式.其中用create创建是不管这个节点有没有都进行创建,而merge是如果节点存在则不再创建. 1 //merge方式,创建唯一节点 2 merge(n:教父) 3 4 //create方式,无论有没有都进行创建节点

递归学习(一)最简单的C语言递归求年龄算法

递归是我们在学习编程中,必须要去学习的,虽然递归晦涩难懂 ,但是很多时候,递归的思想会很有用,但是在实际开发中,不建议使用递归,要用循环来代替递归,不然bug无穷. ----------------------------------------------------------- 问题描述: 有5个人坐在一起, 问第5个人,他说比第4个人大2岁, 问第4个人,他说比第3个人大2岁, 问第3个人,他说比第2个人大2岁, 问第2个人,他说比第1个人大2岁, 问最后一个人,他说10岁 第5个人多大

GitHub学习心得之 简单操作

作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 本文对Github的基本操作进行了总结, 主要基于以下文章: http://gitref.org/zh/inspect/#diff (Git 参考手册)http://www.runoob.com/w3cnote/git-guide.html (Github 简明教程)http://mherman.org/blog/2013/09/16/managing-multiple-github

Linux学习笔记(四)---centos7系统安装后的一些简单操作

centos7系统安装后的一些简单操作 上次我们通过虚拟机已经安装完成CentOS7.重启系统后,进入登陆界面.系统登陆成功后,如下所示:我们虚拟机默认网络是使用NAT,这时我们仍无法使用网络.我们可以通过ifconfig查看一下,没有IP地址.注意ifconfig命令,必须是root用户才可以执行.我们使用dhclient命令,获取IP地址,然后再使用ifconfig查看.我们再检测一下网络是否可以用,ping一下百度网站,按ctrl+c中止命令.关于设置静态IP地址,后期再专门分享.再配置w

进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量.所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来

linux基础学习笔记——操作大全

作者:liaoyi 更新时间:2014-6-2 ****************基本操作***************** 关机 shutdown -h now    root用户               init 0              root用户halt      root+一般用户poweroff 重启shutdown -r now    root用户init6     root用户reboot            root+一般用户 注意:1.shutdown 比较灵活,可

Apache Derby-02通过IJ简单操作DERBY

上回说到了Derby的历史以及需要准备的环境,这章将为大家介绍Apache Derby的简单操作 1.配置Derby环境 1.1去官网下载Derby_BIN并解压在文件夹中 http://mirrors.cnnic.cn/apache//db/derby/db-derby-10.12.1.1/db-derby-10.12.1.1-bin.zip 1.2如果需要在本地使用DERBY需要在系统变量中设置变量,derby是基于JAVA环境的所以在之前需要JAVA环境变量的配置 1.3 在系统变量创建D

MySQL基本概念以及简单操作

一.MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件. MySQL是将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化