以推荐用户功能为例学习图库neo4j 节点关系查询

原文: https://www.toocruel.net/yi-tui-jian-yong-hu-gong-neng-wei-li-xue-xi-tu-ku-neo4j-jie-dian-guan-xi-cha-xun/

需求:

查出某用户与其他用户的共同通讯录好友:

准备:

将用户数据、关系数据导入neo4j中(非本文重点,略)

一、Neo4j中的节点及关系:

以推荐用户功能为例学习图库neo4j 节点关系查询

  • 蓝色表示节点:用户/ID,绿色表示节点:手机号,线H表示关系:拥有

  • 这样,这个图表示的就是100002和25730032用户有如图绿色的7个共同通讯录好友

  • 附查询语句:

    MATCH (a:Person {uid : '100002'})-[:H]->(m)<-[:H]-(b:Person) where  b.uid in ['25730032']   return a,m,b;
    

二、查询语句分析

上面的仅是查询某个人和另一个人的共同通讯录好友,而我们的需求是查询某个人和其他所有人的共同通讯录好友,去掉where条件即可,下图:
以推荐用户功能为例学习图库neo4j 节点关系查询

查询语句:

MATCH (a:Person {uid : '100002'})-[:H]->(m)<-[:H]-(b:Person) return a,m,b limit 100;

查询分析:

  • MATCH 匹配,可以理解为找出这样一条路径:用户a->某个手机号m->用户b,文字描述为:用户a拥有手机号m,b也有手机号m,即a b 共同通讯录好友的记录,可以看成sql查询的二维表;
  • where 可以从这个表中过滤掉不需要的记录;
  • RETURN 相当于sql的select
  • 最后可以加上分页skip、 limit