下载帮

您现在的位置是:首页 > 教程分享 > 经验技巧

经验技巧

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创建的数组类型的属性值,其结果仍为字符串

文章评论