我使用下面的查询创建一个模块名列表作为行。作为列我想要基于表达式ABC和大小函数有几个计数。 - >大小([ABC])。在过去,我使用大括号来指定应选择Test类型的节点。
MATCH (ireq:InternalRequirement)
RETURN DISTINCT ireq.fullModuleName AS ModName,
size([x IN collect(ireq) WHERE (x)<-[:TESTS]-(:Test {project: 'CustomerA', type: 'HIL'})
AND x.reqLevel CONTAINS 'SW' | x.reqLevel]) as SW_Reqs_HIL
不幸的是,我的数据中项目的命名不是同质的(例如&#39; CustomerA_ext&#39;)。这就是为什么我需要一种更模糊的方法。我想在project-attribute上使用CONTAINS opperator。在正常的MATCH子句中,这没有问题,但在size-function中我得到一个错误:&#34; ts未定义&#34; 。我该如何定义它?或者是否有更好的解决方案来匹配多个属性与CONTAINS?
MATCH (ireq:InternalRequirement)
RETURN DISTINCT ireq.fullModuleName AS ModName,
size([x IN collect(ireq) WHERE (x)<-[:TESTS]-(ts:Test)
AND ts.project CONTAINS 'CustomerA'
AND ts.type CONTAINS 'HIL'
AND x.reqLevel CONTAINS 'SW' | x.reqLevel]) as SW_Reqs_HIL
答案 0 :(得分:0)
下面的查询使用OPTIONAL MATCH
来执行您可能想要的操作。
MATCH (ireq:InternalRequirement)
OPTIONAL MATCH (ireq)<-[:TESTS]-(ts:Test)
WHERE
ireq.reqLevel CONTAINS 'SW' AND
ts.project CONTAINS 'CustomerA' AND
ts.type CONTAINS 'HIL'
RETURN ireq.fullModuleName AS ModName, COUNT(ts) as SW_Reqs_HIL;
请注意,WHERE
子句仅适用于前一个(OPTIONAL) MATCH
。