节点:一个图形的一个基本单元
属性:描述节点及关系的键值对
关系:连接两个节点的部分,具有方向
标签:由节点或关系组成,一个节点可以包含多个标签
neo4j中使用的数据库查询语言是cypher,是一种类SQL的声明式语言,简称CQL。现简单示例增删改查操作。
操作一:增
不同于sql中的insert插入数据,cypher使用create来创建节点、关系等并插入数据。
节点
create (:Agent{name:'周恩来',post:'主任'}),(:Agent{name:'洪扬生',post:'总务科科长'}),(:Agent{name:'陈赓',post:'情报科科长'}),
(:Agent{name:'顾顺章',post:'行动科科长'}),(:Agent{name:'李强',post:'交通科科长'})
即创建了5个节点,均为Agent标签。 括号为一个节点,大括号包裹节点属性,多个节点间使用逗号分隔,节点内各属性也使用逗号分隔。
查询:
MATCH (n:Agent) RETURN n
match (zhou:Agent{name:'周恩来'})
match (chen:Agent{name:'陈赓'})
CREATE (zhou)-[rel:下级]->(chen)
先查出需要建立关系的节点,再create建立关系。[]表示关系。
查询:
MATCH p=()-[r:`下级`]->() RETURN p
关系+节点
前面所述为分别创建节点及关系,也可以在创建节点同时赋予关系。
create (:Agent{name:'李克农',post:'特工'}) -[rel:同事]-> (:Agent{name:'胡底',post:'特工'})
查询:
MATCH p=()-[r:`同事`]->() RETURN p
MATCH (zhou:Agent {name: '周恩来'})-[rel:领导]->(hong:Agent {name: '洪扬生'})
DELETE rel
先查出关系的起止节点,再进行删除。
删除节点
match (gu:Agent {name:'顾顺章'})
delete gu
先查出节点,再进行删除。当待删除的节点有关系存在时,需要先删除其关系,再删节点。
删除节点及其关系
match (li:Agent{name:'李克农'})
detach delete li
删除节点属性
match (hu:Agent{name:'胡底'})
remove hu.post
即移除了post属性。
操作三:改
match (hu:Agent{name:'胡底'})
set hu.post='特工'
即修改了post属性。修改多个节点可以使用逗号分隔。
以上只是neo4j的简单使用,同sql类似,cypher同样存在各种内置函数,本章就不作说明了。
ps:示例无冒犯之意。
内容参考官方文档:https://neo4j.com/developer/get-started/