Cypher:
Cypher是一种声明式描述性的图查询语言,能够实现简单高效的查询和更新图形数据库。Cypher语言的关键字不区分大小写,但属性值、标签、关系类型和变量是区分大小写的。
创建节点:
节点模式的构成:(Variable:Lable1{Key1:Value1,Key2:Value2})
(Neo4j在创建新的节点时,会自动为节点设置ID值,节点ID是递增且唯一的)
举例:
CREATE
(`0` :Student {name:'JM68',age:'26'}) ,
(`1` :Student {name:'ZWL',age:'26'})
创建两个节点,0
,1
是变量名,即节点的变量名,节点名为Student
,{}
内是属性与属性值
创建关系:
关系的构成:StartNode - [Variable:RelationshipType{Key1:Value1,Key2:Value2}] -> EndNode
(在创建关系时,必须指定关系类型)
在Cypher中,关系分为三种:符号“--”,表示有关系,忽略关系的类型和方向;符号“-->”和“<--”,表示有方向的关系;
举例:
CREATE
(`0`)-[:`friend` {from:'2015'}]->(`1`)
关系类型:friend
朋友,属性from
,属性值2015
MATCH 查询:
- 查询整个数据图形
MATCH(`0`) return `0`
- 查询跟指定节点有关系的节点
match(`0`)--(:`Student`)
return `0`;
- 查询有指定属性的节点
match(n{name:'JM68'})
return n;
MERGE 对不存在的节点创建, 存在的返回
- 通过merge子句匹配搜索模式
匹配模式是:一个节点有Student标签,并且具有name属性;如果数据库不存在该模式,那么创建新的节点;如果存在该模式,那么绑定该节点;
MERGE
(`0`:Student { name: 'JM68' })
RETURN `0`;
- 如果需要创建节点,那么执行on create 或 on match 子句,修改节点的属性;
MERGE
(`0`:Student { name: 'JM68' })
ON CREATE SET `0`.created = timestamp()
ON MATCH SET `0`.updatetime = timestamp()
RETURN `0`.name, `0`.created
跟实体相关的函数
- 通过id函数,返回节点或关系的ID
MATCH (:Student { name: 'JM68' })-[r]->(`1`)
RETURN id(r);
- 通过type函数,查询关系的类型
MATCH (:Student { name: 'JM68' })-[r]->(`1`)
RETURN type(r);
- 通过lables函数,查询节点的标签
MATCH (:Student { name: 'JM68' })-[r]->(`1`)
RETURN lables(`1`);
- 通过keys函数,查看节点或关系的属性键
MATCH (a)
WHERE a.name = 'JM68'
RETURN keys(a)
- 通过properties()函数,查看节点或关系的属性
CREATE (`0`:Person { name: 'JM68', age:26 })
RETURN properties(`0`)
网友评论