我正在努力获得既有效又能通过跳过和限制进行分页的正确密码。
这是一个简单的场景:我有相关的节点(公司)< - [A] - (set)< - [B] - (job)其中有多个(set)的实例有不同的(job) )与它们相关的实例。 (作业)节点具有特定的状态属性,可以保存多个状态之一。我们需要计算每个(set)特定状态(作业)节点的数量,并使用skip和limit在不同(集合)节点上进行分页。
因此,我们可以使用此方法获得job.status计数的非常有效的查询。
pip install python-igraph
这将为我们提供一行Set.Description,Job.Status和JobStatus计数。但是我们将根据Job.Status为Set获取多行。但这不利于对不同集合进行分页。类似的东西:
match (c:Company {id: 'MY.co'})<-[:type_of]-(s:Set)<-[:job_for]-(j:Job)
return s.Description, j.Status, count(*) as StatusCount;
我们尝试使用正确的cypher实现的是基于不同集合的结果行。像这样:
s.Description j.Status StatusCount
-------------------+--------------+----------------
Set 1 | Unassigned | 10
Set 1 | Completed | 2
Set 2 | Unassigned | 3
Set 1 | Reviewed | 10
Set 3 | Completed | 4
Set 2 | Reviewed | 7
然后,这将允许我们使用跳过和限制正确地对集合进行分页。
我尝试了很多不同的方法,似乎找不到适合这种结果的组合。有人有主意吗?谢谢!
**编辑 - 使用MIchael提供的答案,以下是如何获取java **中的状态计数值
s.Description Unassigned Completed Reviewed
-------------------+--------------+-------------+----------
Set 1 | 10 | 2 | 10
Set 2 | 3 | 0 | 7
Set 3 | 0 | 4 | 0
答案 0 :(得分:2)
您可以使用WITH
和聚合,也可以使用地图结果
match (c:Company {id: 'MY.co'})<-[:type_of]-(s:Set)<-[:job_for]-(j:Job)
with s, j.Status as Status,count(*) as StatusCount
return s.Description, collect([Status,StatusCount]);
或
match (c:Company {id: 'MY.co'})<-[:type_of]-(s:Set)<-[:job_for]-(j:Job)
with s, j.Status as Status,count(*) as StatusCount
return s.Description, collect({Status:Status,StatusCount:StatusCount]);