gpt4 book ai didi

neo4j - 查找具有所有公共(public)中介的节点

转载 作者:行者123 更新时间:2023-12-04 18:30:44 25 4
gpt4 key购买 nike

我正在创建一个系统,其中我们将 ordersstaff 匹配。从概念上讲,order 是对人员进行某项工作的请求,而staff 是可以完成该工作的人员。一个 order 可以有一个或多个 requirements(即限制谁可以做这项工作),一个 staff 可以再有一个 >要求(即从事工作的资格)。

我正在尝试创建一个密码查询,该查询将为我提供所有 所有 requirement 列出的 staff 订单。换句话说,我试图找到与给定 order 节点相关的每个 requirement 节点相关的所有 staff 节点。 我的问题是:如何创建密码查询来为该业务逻辑建模?

例如,考虑以下示例数据:

查看 orderId: 1 节点。它与两个节点有 requires 关系,分别标记为 RNER IV。换句话说,订单 #1 要求任何申请人都具有 RN 资格和 ER IV 资格。碰巧工作人员 Evan (staffId: 1) 具有这两种资格,因此他应该能够申请该工作。工作人员 Tim 有这些要求之一,但不能同时满足这两个要求,因此他应该无法申请该工作。另外,orderId: 2 只有一个要求,Evan 和 Tim 都有,所以他们应该都能申请那个工作。

所以本质上,如果我从订单 #1 开始,我只想找回 Evan。如果我从订单 #2 开始,我会想找回 Evan 和 Tim*。

下面的查询已经完成了一半。它将为我提供从给定订单到工作人员一次一项要求的所有独特路径。但是,它不会检查是否满足每个需求路径(这意味着目前它仅适用于只有一个需求的订单):

start o=node(2) 
match o-[:requires]->req<-[:hasRequirement]-s
return o, req, s;

那么我有哪些选择?我可以以某种方式检查是否存在未知数量的匹配关系?或者我需要以不同的方式对我的数据进行建模吗?

*编辑:我在设置示例数据时犯了一个错误。 Tim 应该与 RN 相关联,以便他有资格获得订单 #2。

最佳答案

我猜这个密码语句可以解决你的问题:

start o=node(2) 
match o-[:requires]->req<-[:hasRequirement]-p
with o, p, count(req) as c
where length(o-[:requires]-()) = c
return p, c

关于neo4j - 查找具有所有公共(public)中介的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14657265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com