You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于size函数模糊模式定义及CONTAINS运算符的Cypher查询咨询

嘿,我明白你的需求了!之前用精确匹配选Test节点因为项目命名不统一卡壳了对吧?这就给你调整Cypher查询,搞定模糊匹配project属性+按模块名作为行输出+基于ABC表达式和size函数统计列的需求~

核心解决思路

常规MATCH子句里确实没有内置的CONTAINS匹配,但我们可以用WHERE子句配合CONTAINS运算符实现模糊匹配;同时通过分组聚合模块名,结合列表推导式+size()函数来计算你需要的统计值。

完整Cypher示例

// 1. 匹配所有Test类型节点,并用WHERE实现project属性的模糊匹配
MATCH (test:Test)
WHERE test.project CONTAINS 'CustomerA'  // 替换成你要模糊匹配的核心关键词
// 2. 关联到对应的模块节点(请根据你的数据模型调整关系类型和模块标签)
MATCH (test)-[:BELONGS_TO]->(module:Module)
// 3. 分组计算统计值:按模块名聚合,同时计算ABC相关统计
WITH 
  module.name AS 模块名,
  collect(test) AS 模块下所有测试,
  count(test) AS 总测试数
// 4. 基于ABC表达式和size函数生成统计列
RETURN
  模块名,
  总测试数,
  // 统计符合ABC表达式的测试数量:用列表推导式筛选后取size
  size([t IN 模块下所有测试 WHERE t.status = 'ABC']) AS ABC匹配数,  // 替换成你的实际ABC表达式
  // 可以扩展更多统计,比如ABC匹配数的占比
  round((size([t IN 模块下所有测试 WHERE t.status = 'ABC']) * 100.0 / 总测试数), 2) AS ABC占比(%)
ORDER BY 模块名

关键细节说明

  • 模糊匹配优化:如果需要忽略大小写,把条件改成toLower(test.project) CONTAINS toLower('CustomerA');要匹配多个关键词的话,用OR拼接:test.project CONTAINS 'CustomerA' OR test.project CONTAINS 'CustomerB'
  • ABC表达式灵活调整:示例里用t.status = 'ABC'作为判断逻辑,你可以换成任何符合需求的Cypher表达式(比如exists(t.abc_property)、t.category IN ['ABC', 'ABC_EXT']等)
  • 数据模型适配:请根据你的实际图谱调整模块的标签(比如Module改成Service)和关联关系(比如:BELONGS_TO改成:PART_OF)

简化版(如果模块名是Test节点的属性)

如果模块名本身就是Test节点的一个属性(不需要关联其他节点),查询可以更简洁:

MATCH (test:Test)
WHERE test.project CONTAINS 'CustomerA'
WITH 
  test.module_name AS 模块名,  // 假设Test节点自带module_name属性
  collect(test) AS 模块下所有测试
RETURN
  模块名,
  size(模块下所有测试) AS 总测试数,
  size([t IN 模块下所有测试 WHERE 你的ABC表达式]) AS ABC匹配数
ORDER BY 模块名

内容的提问来源于stack exchange,提问作者Holger Zstar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:18:27