以推荐用户功能为例学习图库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中的节点及关系:

QQ20181009-164827

  • 蓝色表示节点:用户/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条件即可,下图:
QQ20181009-170111

查询语句:
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
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值