查找具有所有公共中介的节点

2023-12-01

我正在创建一个我们匹配的系统orders to staff。从概念上讲,一个order是对人做一些工作的请求,并且staff是一个能够完成这项工作的人。一个order可以有一个或多个requirements(即对谁可以做这项工作的限制),以及staff还可以再多一份requirements(即工作资格)。

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

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

  • 我的示例数据的图片视图
  • 或者,这里是一个 我的数据的交互式控制台

看着那(这订单编号:1节点。它有一个requires与两个节点的关系,标记为RN and ER IV。换句话说,第 1 号命令要求任何申请人都具备 RN 资格和 ER IV 资格。碰巧的是,工作人员Evan (员工编号:1) 具备这两项资格,所以他应该能够申请那份工作。工作人员Tim满足其中一项要求,但不能同时满足两项要求,因此他应该无法申请该工作。此外,订单编号:2只有一个要求,埃文和蒂姆都有,所以他们都应该能够申请那份工作。

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

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

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

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

*Edit:我在设置示例数据时犯了一个错误。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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找具有所有公共中介的节点 的相关文章

  • Neo4j 的 Cypher 查询语言是开源的吗?

    Neo4j的语言Cypher的现状如何 我真的很喜欢它 但我想避免 Neo4j 锁定 是否还有像 Gremlin 中那样的其他 Cypher 界面 Regards Cypher 完全是 OSS 请参阅https github com neo
  • 如何在java中使用cypher加载CSV文件?

    我是密码新手 我想在java中使用cypher加载csv 我用谷歌搜索并找到了以下作品 LOAD CSV WITH HEADERS FROM http neo4j com docs 2 3 1 csv import movies csv A
  • 通过 awselb 使用 ssl 时的 neo4j java 驱动程序问题

    I am using neo4j community version 3 1 1 and enterprise edition version 3 0 1 with ssl configured through awselb To conn
  • 如何在neo4j中显示屏幕上的所有节点

    我有近 5000 个节点Recipes和 5 个节点Meal Types在 Neo4j 数据库中 目前他们之间没有任何关系 我正在下面运行 CQL MATCH n RETURN n LIMIT 100000 这运行良好 但它返回与相关的节点
  • 带子图聚合的递归查询(任意深度)

    我问了一个问题earlier https stackoverflow com questions 28036055 recursive query with sub graph aggreagation关于沿着图表聚合数量 提供的两个答案效
  • 如何在ubuntu中从源代码安装postgresql的AGE扩展? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 由于我想尝试一下 Apache Age of postgresql 所以在阅读文档时我迷失了方向 有什么简单的解决方案吗 这是有关如何
  • 如何返回每个另一个节点属性的最大计数

    我需要计算一位作曲家的音乐作品每十年被演奏了多少次 然后只返回每十年演奏次数最多的一首作品 除了过滤除每十年最高计数之外的所有内容之外 该密码可以执行所有操作 match c Composer CREATED BY w Work lt 2
  • Neo4j - 根据关系属性查找两个节点之间的最短路径

    我试图弄清楚是否有某种方法可以根据关系总和获得两个节点之间的最短距离 给出以下示例 neo4j 图像示例 https i stack imgur com fiJe1 png 上图代码 CREATE some point 1 Point ti
  • 如何结识有相同兴趣的朋友的朋友?

    交朋友的朋友很容易 我得到了这个 看起来效果很好 g v 1 in FRIEND in FRIEND filter it g v 1 但我想做的只是结交有相同兴趣的朋友的朋友 下面我希望 Joe 被推荐为 Moe 而不是 Noe 因为他们没
  • spring-data-neo4j 基本一对多关系不持久

    EDIT 示例项目可在github https github com troig neo4jCustomRepository 我在后端项目中使用 Neo4J Rest 图形数据库 托管在 grapheneDb 中 和 Spring Data
  • Neo4j:基于聚合函数过滤节点

    假设我有一个客户节点列表和每个客户下的订单列表 表示为与这些客户节点关联的订单节点 每个订单都有一个与其关联的成本数字属性 我想返回那些平均订单大于阈值的客户 这是一些无法运行的代码 说明了我想要的内容 MATCH n0 Customer
  • SET label : 将标签名称作为参数传递

    我有一个这样的查询 将 data 展开为行 MERGE p Book guid row bookGuid set p name row name p Science 我想传递标签 科学 作为参数 因为该标签对于我在 data 中传递的所有行
  • Neo4j 中合并和创建唯一之间的区别

    我试图找出合并和创建唯一之间的区别 我知道这些功能 合并 如果不存在模式 我可以创建节点 MERGE n name X RETURN n 这将创建具有属性名称的节点 n 空节点 m 和关系 RELATED MERGE n name X RE
  • 为 Apache Spark 示例运行 Cypher (CAPS)

    我知道这是一个广泛的问题 但这会对neo4j不属于某个领域的用户scala编程 我需要使用Apache Spark 项目的 Cypher https github com opencypher cypher for apache spark
  • 在 Neo4j OGM 1.1.3 ogm 深度为 2 中加载对象非常慢

    使用查询深度 2 时出现超时session load 我正在使用 Neo4j OGM 1 1 3 尝试从 Spring Data Neo4j 3 4 迁移 尝试加载 Node 对象 class Node Long id String nam
  • 构造映射不允许索引集合作为映射键?

    所以我正在尝试写一个答案这个问题 https stackoverflow com questions 29262918 cypher zip collections这对我来说似乎很有趣 什么鬼 我来试试 这是我想出的解决方案 对我来说这似乎
  • 如何仅匹配两个节点之间的一种关系

    我正在使用 neo4j 图形数据库 它在 Ruby on Rails 中使用 例如 我汤姆和杰瑞之间有3个关系 他们合作盖了3栋房子 现在我只想匹配3个中的1个 如何编写查询代码 我已经尝试过 这是我的代码 Neo4j Session qu
  • UNWIND 从 JSON 文件加载的多个不相关的数组

    我试图通过一次调用 apoc load json 来展开多个数组属性 我的版本不能完全工作 某些关系无法加载 我的猜测是 这是由于通过WITH 命令进行输出管道造成的 如果我为每个基于数组的属性单独运行展开 我可以加载所有内容 但我很好奇如
  • neo4j合并2个或多个重复节点

    我使用 cypher 手动输入 Neo4j 数据库 因此很容易出现创建重复节点等错误 重复的节点将与其他节点具有各自的关系 是否有内置函数可以合并这些节点 或者我应该手动完成 听起来可能 但密码脚本很复杂 获取每个重复节点的关系 使用正确的
  • neo4j cypher更新现有节点或创建新节点

    我有一个包含大约 900 万个节点和 1200 万个关系的图 对于图中的每个节点 每个节点都有一个属性子集 这些属性通过标签形成节点的唯一标识 该图正在通过各种数据源进行更新 这些数据源会增加图中的现有节点 或者在节点不存在时创建新节点 我

随机推荐