Neo4j -- Cypher基础

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`)

你可能感兴趣的:(Neo4j -- Cypher基础)