Neo4j干货之CQL语句总结
2022-02-01 13:13经验技巧
查询节点总共有多少个属性(无重复)
MATCH (n) UNWIND keys(n) AS key return distinct key
查询节点总共有多少个属性(有重复)
MATCH (n) UNWIND keys(n) AS key return count(key)
查找共同好友
MATCH(p:`歌手`{name:"周杰伦"})-[:friends]->(d:`歌手`)<-[:friends]-(q:`歌手`{name:"陈奕迅"}) RETURN d
查找共同好友的好友
MATCH(p:`歌手`{name:"周杰伦"})-[:friends]->(d:`歌手`)<-[:friends]-(q:`歌手`{name:"陈奕迅"}) WITH p,q,d MATCH (d:`歌手`)-[:friends]->(l:`歌手`) RETURN p,q,d,l
注:WITH用于暂存查询结果
两个节点某种关系的最短路径
MATCH p=shortestpath((:`歌手`{name:"周杰伦"})-[r:friends]->(:`歌手`{name:"陈奕迅"})) return nodes(p)
两个节点之间路径长度为1~5的所有路径
match p=((:`歌手`{name:"周杰伦"})-[*1..5]->(:`歌手`{name:"陈奕迅"})) return nodes(p)
判断关系不为“rel”的关系总数
MATCH p=()-[r]->() WHERE type(r)<>"rel" RETURN count(r)
按节点名称数量倒序排序
MATCH (n:Singer) RETURN n.name,count(n) ORDER BY count(n) DESC
计算节点的出度、入度
MATCH (n:Singer) WHERE n.name='周杰伦' WITH size((n)-->()) as out,size((n)<--()) as in,n RETURN out,in
修改节点属性名称
MATCH (n) set n.newlabel=n.oldlabel remove n.oldlabel
修改节点、关系标签
MATCH(n:oldlabel) SET n:newlabel REMOVE n:oldlabel
MATCH p=(n:Node1)-[r:oldrel]->(e:Node2) CREATE(n)-[r2:newrel]->(e) SET r2 = r WITH r DELETE r
py2neo查询/创建属性值为数组的节点
if isinstance(v, list):
query += f"n.{k}={v}"
else:
query += f"n.{k}='{v}', "
k为节点属性名,v为属性值
注:Java查询py2neo创建的数组类型的属性值,其结果仍为字符串
很赞哦! ()