Neo4j Cyber 使用

本文深入探讨Neo4j图形数据库的特点与优势,通过实例演示如何创建节点与关系,包括单向与双向关系的建立,以及如何使用MATCH语句进行复杂查询。适合希望了解图形数据库工作原理与操作技巧的读者。

Neo4j是一个世界领先,具有完备事务的开源图形数据库。

图形数据库是以图形结构的形式存储数据的数据库。它以节点,关系和属性的形式存储应用程序的数据。正如RDBMS以表的“行,列”的形式存储数据,GDBMS以“图形”的形式存储数据。

图数据库中每个节点都直接包含一个关系列表,关系列表中存放此节点与其他节点的关系记录。这些关系记录按类型和方向组织起来,并且可以保存附加属性。图数据库可以使用此列表直接访问连接的节点,无需进行记录的搜索,匹配计算。

1. 单向关系

1 -> 2 -> 5 -> 9
       -> 6
  -> 3 -> 7 -> 10
  -> 4 -> 8 

创建节点和单向关系

create (zhang1:People{name:'zhang1'}) 
create (zhang2:People{name:'zhang2'}) 
create (zhang3:People{name:'zhang3'})
create (zhang4:People{name:'zhang4'})
create (zhang5:People{name:'zhang5'})
create (zhang6:People{name:'zhang6'})
create (zhang7:People{name:'zhang7'})
create (zhang8:People{name:'zhang8'})
create (zhang9:People{name:'zhang9'})
create (zhang10:People{name:'zhang10'})

create (zhang1)-[:FOLLOW]->(zhang2)
create (zhang1)-[:FOLLOW]->(zhang3)
create (zhang1)-[:FOLLOW]->(zhang4)
create (zhang2)-[:FOLLOW]->(zhang5)
create (zhang2)-[:FOLLOW]->(zhang6)
create (zhang3)-[:FOLLOW]->(zhang7)
create (zhang4)-[:FOLLOW]->(zhang8)
create (zhang5)-[:FOLLOW]->(zhang9)
create (zhang7)-[:FOLLOW]->(zhang10)

单向关系
[r:FOLLOW*0..]:查询的关系深度从0到无止尽

in: 即 a -> b

match p=(a:People) - [r:FOLLOW*0..] -> (b:People) where b.name = 'zhang2' return p

in: 即 a -> b
out: 即 b -> c

match p=(b:People) - [rr:FOLLOW*0..] -> (c:People) where b.name = 'zhang2' return p

out: 即 b -> c
both: 即 a <-> b <-> c

match p=(a:People) <- [r:FOLLOW*0..] -> (b:People) <- [rr:FOLLOW*0..] -> (c:People)
where b.name = 'zhang9' return p

both:即 a <-> b <-> c

2. 单双向关系

1 <-> 2 <-> 5 -> 9
         -> 6
   -> 3 <-> 7 -> 10
   -> 4 <-> 8   

创建节点和单双向关系

create (zhang1:User{name:'zhang1'}) 
create (zhang2:User{name:'zhang2'}) 
create (zhang3:User{name:'zhang3'})
create (zhang4:User{name:'zhang4'})
create (zhang5:User{name:'zhang5'})
create (zhang6:User{name:'zhang6'})
create (zhang7:User{name:'zhang7'})
create (zhang8:User{name:'zhang8'})
create (zhang9:User{name:'zhang9'})
create (zhang10:User{name:'zhang10'})

create (zhang1)-[:FOLLOW]->(zhang2)
create (zhang1)-[:FOLLOW]->(zhang3)
create (zhang1)-[:FOLLOW]->(zhang4)
create (zhang2)-[:FOLLOW]->(zhang1)
create (zhang2)-[:FOLLOW]->(zhang5)
create (zhang2)-[:FOLLOW]->(zhang6)
create (zhang3)-[:FOLLOW]->(zhang7)
create (zhang4)-[:FOLLOW]->(zhang8)
create (zhang5)-[:FOLLOW]->(zhang2)
create (zhang5)-[:FOLLOW]->(zhang9)
create (zhang7)-[:FOLLOW]->(zhang3)
create (zhang7)-[:FOLLOW]->(zhang10)
create (zhang8)-[:FOLLOW]->(zhang4)

单双向关系
MATCH 语句:像SQL语句一样

match (u:User) return u
match (u:User) where u.name='zhang5' return u
match p=(u:User)-[r:FOLLOW]->(uu:User) return p

[r:FOLLOW*0..]:查询的关系深度从0到无止尽

in: 即 a -> b

match p=(a:User) - [r:FOLLOW*0..] -> (b:User) where b.name = 'zhang2' return p

in: 即 a -> b
out: 即 b -> c

match p=(b:User) - [rr:FOLLOW*0..] -> (c:User) where b.name = 'zhang2' return p

out: 即 b -> c
both: 即 a <-> b <-> c

match p=(a:User) <- [r:FOLLOW*0..] -> (b:User) <- [rr:FOLLOW*0..] -> (c:User) 
where b.name = 'zhang9' return p

both:即 a <-> b <-> c

参考:
Neo4j官方文档
Neo4j官方Cyber手册
neo4j 教程 w3cschool

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值