Neo4j,Cypher使用COUNT和COLLECT返回JSON

时间:2017-12-19 05:02:23

标签: json neo4j cypher

我试图像这样返回一个JSON对象:

{   "rels": [
    {
      "rel": "type_1",
      "foos": 15
    },
    {
      "rel": "type_2",
      "foos": 2073
    },
    {
      "rel": "type_3",
      "foos": 23
    }   ] }

使用查询。

MATCH (n:bar)<-[r:REL]-(n1:foo)
WHERE n.bar_id='1234567890'
RETURN collect({rel: r.rel_status, foos: count(r.rel_status)}) AS rels

REL关系中有一个名为rel_status的属性。

  

错误:不能在聚合函数中使用聚合函数。

1 个答案:

答案 0 :(得分:2)

这是因为您试图在count()内使用collect(),这是不允许的。你需要一次完成这一步。

MATCH (n:bar)<-[r:REL]-(:foo)
WHERE n.bar_id='1234567890'
WITH r.rel_status as rel, count(r) as foos
RETURN collect({rel: rel, foos: foos}) AS rels