neo4j - 检查子图是否整体满足条件
问题描述
我正在尝试选择所有满足仓库要求的产品
在此示例中,我需要选择最大尺寸为 5 且最大重量为 10 的所有产品。
为简化起见,我只有 MAX(没有 MIN 或 EQ)约束,因此可以对运算符进行硬编码。
我尝试使用 COLLECT 并使用 ALL 运算符对需求子图进行分组,但失败了。
查询以创建图表
CREATE
// NODES
(warehouse:WAREHOUSE{name:'My Warehouse'}),
(smallProduct:PRODUCT{name:'Small Product'}),
(largeProduct:PRODUCT{name:'Large Product'}),
// RELATIONSHIPS
(size:CONSTRAINT{name:'Size'}),
(weight:CONSTRAINT{name:'Weight'}),
(warehouse)-[:LIMIT{value:5}]->(size),
(warehouse)-[:LIMIT{value:5}]->(weight),
(smallProduct)-[:AMOUNT{value:3}]->(size),
(smallProduct)-[:AMOUNT{value:2}]->(weight),
(largeProduct)-[:AMOUNT{value:10}]->(size),
(largeProduct)-[:AMOUNT{value:4}]->(weight)
更新
以下查询显然解决了这个问题:
MATCH (warehouse:WAREHOUSE)
MATCH rel = ((warehouse)-[limit:LIMIT]->(constraint:CONSTRAINT)<-[amount:AMOUNT]-(product:PRODUCT))
WITH warehouse, product, collect(relationships(rel)) as paths
WHERE all( p in paths WHERE p[0].value > p[1].value )
return product
我想知道是否有更好的解决方案。
解决方案
推荐阅读
- sql - sql中多个select语句的join结果
- r - R plot 函数中的 shift 参数在做什么?
- powerquery - Power Query 中的参考单元格
- java - Firebase/Android FirebaseUI Error
- python - django:没有 Techpost 匹配给定的查询
- swift - 在 Swift 中执行事务时如何从 Neo4j 读取 Theo 返回的数据?
- php - Htlm&SQL&PHP 看不到正确的字符
- c - 如果要保存的密钥是 HKEY_LOCAL_MACHINE,为什么 RegSaveKey() 会失败并显示错误代码 5(访问被拒绝)?
- bash - 如何使用`ip`在bash中获取设备的网络掩码?
- java - 通过Java中的流复制数组的每个元素