创建节点

创建单标签的节点语法

CREATE (<node-name>:<label-name> {<key>:<Value> ... <n-key>:<n-Value>})

node-name

创建的节点名称

label-name

节点标签名称

Property1-name:Propertyn-name

属性是键值对。 定义将分配给创建节点的属性的名称

create(abc:shop{id:111,name:"dfsdf"})

neo4j python创建 neo4j foreach_bc

create (stu:student{name:"tom"}),(ctiy:china{name:"shanghai"})

neo4j python创建 neo4j foreach_删除节点_02

创建多个标签到节点

CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>)
create (stu666:student6:xin:guanxi{name:"tom"})

neo4j python创建 neo4j foreach_自然语言处理_03


在创建节点的时候同时设置关联

create (st:student{name:"tom"})-[livein:staddress]->(city:Capit{name:"USA"})

neo4j python创建 neo4j foreach_删除节点_04


为现有节点创建关联

match (stu:student{name:"tom"}),(abc:shop{id:111,name:"dfsdf"}) create(stu)-[st:stuent]->(abc)

neo4j python创建 neo4j foreach_关节点_05


在创建节点的时候可以只设计好需要的属性,不填入具体值而是置为NULL

create (p:parent) return p.name,p.age,p.height

neo4j python创建 neo4j foreach_删除节点_06

match

MATCH (node-name:label-name)
从数据库获取有关节点和属性的数据
从数据库获取有关节点,关系和属性的数据

显示所有节点

MATCH (n) RETURN n

neo4j python创建 neo4j foreach_关节点_07


查找特定的某个节点的具体信息

match (stu666:student6) return stu666.name

neo4j python创建 neo4j foreach_自然语言处理_08


根据点标签查找一类节点

match (n:Capit) return n

neo4j python创建 neo4j foreach_bc_09


根据点属性查找节点

match (n:student) where n.age>1 return n

neo4j python创建 neo4j foreach_bc_10


对于多个标签的节点,可以指定标签进行查找

match (t:china:abc) using scan t.abc where t.name='baihaisheng' return t

根据查询设置值

match (n) where n.name is null set n.name='baihaisheng' return n

neo4j python创建 neo4j foreach_关节点_11


根据标签和属性匹配节点信息。

MATCH (n:Person{name:"ddsg"}}) RETURN  n

匹配出有任意关系的两个节点

MATCH p = (n)-[r]->(m) RETURN p

匹配节点时指定标签、属性和关系类型

MATCH (n:Person)-[:FRIEND]->(m:Person) WHERE n.name = '张'

根据关系属性过滤

MATCH (n)-[k:KNOWS]->(f) WHERE k.since < 2000 RETURN f
节点更新和删除

Detach delete与delete区别:
前者删除节点和关系,后者只是删除节点,Neo4j CQL DELETE和REMOVE命令之间的主要区别 - DELETE操作用于删除节点和关联关系。,REMOVE操作用于删除标签和属性。

创建一个节点,只有一个属性name='baihaisheng'
CREATE (baihaisheng{name:'baihaisheng'})
  
给创建的baihaisheng节点,添加一个属性age=20,修改name属性值为"bhs"
  MATCH (n {name:'baihaisheng'}) 
  SET n.name='bhs'
  SET n.age=20 
  RETURN n

neo4j python创建 neo4j foreach_关节点_12


为节点添加新标签

添加一个标签
MATCH (n{name:'张'}) SET n:Person RETURN n
添加多个标签
MATCH (n{name:'张'}) SET n:Person:Student RETURN n

删除节点标签

MATCH (n{name:'张三'}) REMOVE n:Person RETURN n

为已经存在的两个节点添加关系

MATCH (a:Person {name: "张"}),
        (b:Person {name: "李"})
  MERGE (a)-[r:FRIENDS]->(b)

删除一个节和关系

MATCH (a)-[r:KNOWS]->(b) DELETE r,b

删除delete-关联

创建关系
match (stu1:student1),(stu2:student2) where stu1.age<>stu2.age create (stu1)-[r:classmate]->(stu2)
删除关系
match  (stu1)-[r:classmate]->(stu2) delete r

补充一些其他关系

match (stu1:student1),(stu2:student2)  create (stu1)-[r:classmate]->(stu2),(stu2)-[[r:classmate]->(stu1)

删除重复的节点

match (n:par{name='dsffddsf'}) with n skip 1 delete n
添加或删除属性(set、remove)

Neo4j CQL已提供SET子句来执行以下操作。
向现有节点或关系添加新属性
添加或更新属性值

添加一个tagline

match (stu:per{age:18) set stu.tagline='baihaisheng'

添加一个属性

match (stu:per{age:18) set stu.name='baihaisheng'

删除一个属性

match (stu:per) remove stu.name
Union

Union需要前后的两个查询具有相同的列名

match (t:teach) return t.id union match (s.stu) return s.id
Limit

限制显示节点数,修剪CQL查询结果集底部的结果

match (n) return n limit 3
Skip

跳过几个节点

match (n) return n skip 3
Merge操作

MERGE命令是CREATE命令和MATCH命令的组合
MERGE = CREATE + MATCH
图中搜索给定模式,如果存在,则返回结果,不存在,则创建,对于已经存在的几点,作用只是查找他,并不会新增节点

In操作
match (st:stu)where st.name in ['dfsd','dsfdsfe'] return st
索引和约束
为"Person"标签的name属性创建索引
  CREATE INDEX ON :Person(name)

删除索引

DROP INDEX ON :Person(name)

创建节点属性唯一约束

CREATE CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE

删除节点属性唯一约束

DROP CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE
with

NEO4J中WITH的用法:和Oracle中with的用法相似,把with后面结果集当成一个查询结果、在这个结果基础上再做where条件的筛选
WITH语句是将第一部分匹配的输出作为下一部分匹配的输入

关系

它使用一个箭头标记:() - []→()。 它表示从左侧节点到右侧节点的方向