微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

密码问题,只有连接所有节点才返回结果

如何解决密码问题,只有连接所有节点才返回结果

下图显示,三分之二的人同时拥有 java 和 PHP 作为技能。 我用这个查询生成了这个图

{
 "rows": [
   {
     "name": "PHP","id": 23776,"entity_id": 23776,"yearsOfExperience": 2
   },{
     "name": "Java","id": 17477,"entity_id": 17477,"yearsOfExperience": 2
   }
 ]
}
 MATCH  (s:SkillNode) 
 WHERE s.entity_id = row.entity_id
 with s,row
 match (c:CandidateNode)-[r:KNowS]->(s)
where r.years_of_experience<=row.yearsOfExperience
RETURN *;

我应该在查询中更改什么才能接收候选人(果岭),前提是他们拥有行中提供的所有技能?

对于我发布的示例,我不想让候选人“Ena Dyo Tria”而是所有其他人。 如果行不包含 PHP,则“Ena Dyo Tria”用户可能位于图表中。

enter image description here

解决方法

给你:

  1. 您需要收集所有行和所有技能
  2. 按行展开行并检查候选人的技能是否包含您想要的所有技能
  3. 检查与此候选人相关的每项技能是否都在您想要的所有技能列表中(Java 和 PHP)
 MATCH  (s:SkillNode) 
 WHERE s.entity_id = row.entity_id
 WITH  collect(row) as rows,collect(s) as allSkills
 UNWIND rows as row
 MATCH (c:CandidateNode)-[r:KNOWS]->(s:SkillNode) 
 WHERE r.years_of_experience <= row.yearsOfExperience AND s in allSkills
 WITH c,collect(distinct r) as rels,collect(distinct s) as skills,allSkills 
 WHERE ALL(sk in allSkills where sk in skills) 
 RETURN c,rels,skills

 Sample result:
 ╒════════════════╤═════════════╤════════════════════════════════════════╕
 │"c"             │"rels"       │"skills"                                │
 ╞════════════════╪═════════════╪════════════════════════════════════════╡
 │{"name":"Leo"}  │[{},{},{}]│[{"name":"Java"},{"name":"PHP"        }]│
 ├────────────────┼─────────────┼────────────────────────────────────────┤
 │{"name":"Manos"}│[{},{"name":"PHP"        }]│
 └────────────────┴─────────────┴────────────────────────────────────────┘

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。