赞
踩
一种声明式图数据库查询语言,具有丰富的表现力,能够高效的查询和更新图数据。声明式的查询语言,它具有丰富的表现力,能高效的查询和更新图数据。对于初学者而言Cypher相对简单,相比命令式的Java要简单的多,但是由于Cypher目前处于不断的更新和维护中,其本身的语言也会发生变化。
模式和模式匹配是Cypher的核心,使用模式来描述所需数据的形状,通常使用小括号()表示节点,[] 表示关系和关系的类型,箭头表示关系的方向
-[role]-> // 关系名称
-[:ACTIVE_IN]-> // 关系类型
-[role:ACTIVE_IN]-> // 名称、类型、方向
-[role:ACTIVE_IN{key:value}]-> // 名称、类型、方向、属性
-[role:ACTIVE_IN*start..end]-> // 可变长关系
merge (n:User{name:'李四'});
merge (n:User{name:'王五'});
merge (n:User{name:'二麻子'});
merge (n:User{name:'孙七'});
merge (n:User{name:'张三'});
match(u1:User{name:'张三'}),(u2:User{name:'李四'}) create(u1)-[f:Friend]->(u2);
match(u1:User{name:'张三'}),(u2:User{name:'王五'}) create(u1)-[f:Friend]->(u2);
match(u1:User{name:'孙七'}),(u2:User{name:'王五'}) create(u1)<-[f:Friend]-(u2);
match(u1:User{name:'二麻子'}),(u2:User{name:'李四'}) create(u1)<-[f:Friend]-(u2);
match(u1:User{name:'张三'}),(u2:User{name:'李四'})create(u1)-[c:Colleague]->(u2);
match(u1:User{name:'李四'}),(u2:User{name:'孙七'})create(u1)-[c:Colleague]->(u2);
数据初始化结果如下:
match(n)-[r]-(m) where length(n.name) >2 return n,id(n),type(r),labels(n)
// 修改 -[]-> 试试
match (u:User)-[:Friend]-(f:User) where u.name in ['李四','张三','王五','孙七','二麻子'] and f.name=~'王.*' return u.name,f.name;
查询结果如下:
match (u1)-[f:Friend|Colleague*2]->(u2) return u1.name,u2.name,f // f返回的是list不能用type
match (u1)-[f:Friend|Colleague*2]->(u2) return distinct u1.name,u2.name
match (u1)-[f:Friend|Colleague*2]->(u2) return u1.name,u2.name,extract(n in f | type(n))
match (u:User{name:'李四'})-[friend]-(f) where type(friend)=~'Fri.*' return u,type(friend),f
只查询为Friend的类型结果如下:
match (u:User{name:'李四'}),(other) where other.name in ['张三','二麻子'] and (u)<--(other) return u,other
match (n:User) where n.name=~'张.*' set n.age = 23;
match (n) where exists(n.age) return n;
match (u:User) where u.age is not null return u;
match (u1:User{name:'张三'}) set u1.age = null; // set除了新增和更新属性之外还可以赋值null为删除属性
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。