Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 如何在Cypher中聚合聚合列表_Neo4j_Cypher_Aggregation - Fatal编程技术网

Neo4j 如何在Cypher中聚合聚合列表

Neo4j 如何在Cypher中聚合聚合列表,neo4j,cypher,aggregation,Neo4j,Cypher,Aggregation,基本上,我在问如何完成以下密码查询: unwind([[1, 2, 2, 3, 3, 3], [4, 4, 4, 4, 2, 2]]) as val ... return ... ,这样我可以得到以下结果: +-----------------+ | {1:1, 2:2, 3:3} | +-----------------+ | {4:4, 2:2} | +-----------------+ 对于每一行val,它统计

基本上,我在问如何完成以下密码查询:

    unwind([[1, 2, 2, 3, 3, 3], [4, 4, 4, 4, 2, 2]]) as val
    ...
    return ...
,这样我可以得到以下结果:

    +-----------------+
    | {1:1, 2:2, 3:3} |
    +-----------------+
    | {4:4, 2:2}      |
    +-----------------+

对于每一行
val
,它统计
val
中每个元素的出现次数我在列表中使用字符,因为它们使结果更容易理解

UNWIND [['a', 'b', 'b', 'c', 'c', 'c'], ['d', 'd', 'd', 'd', 'b', 'b']] as list
WITH list AS list1, list AS list2
UNWIND list2 AS element
WITH list1, element, COUNT(element) AS count
RETURN list1 AS list, COLLECT(element) AS values, COLLECT(count) AS counts
这导致:

╒══════════════════╤═════════╤═════════╕
│list              │values   │counts   │
╞══════════════════╪═════════╪═════════╡
│[a, b, b, c, c, c]│[c, a, b]│[3, 1, 2]│
├──────────────────┼─────────┼─────────┤
│[d, d, d, d, b, b]│[b, d]   │[2, 4]   │
└──────────────────┴─────────┴─────────┘
答案是:

可能无法动态分配贴图键

但在创建两个元素列表时,它提供了一个不错的选择。使用此方法,查询将变为:

UNWIND [['a', 'b', 'b', 'c', 'c', 'c'], ['d', 'd', 'd', 'd', 'b', 'b']] as list
WITH list AS list1, list AS list2
UNWIND list2 AS element
WITH list1, element, COUNT(element) AS count
WITH list1 AS list, COLLECT(element) AS values, COLLECT(count) AS counts
RETURN
  list,
  EXTRACT(i IN RANGE(0, LENGTH(values) - 1) | [values[i], counts[i]]) AS occurrences
这使得:

╒══════════════════╤════════════════════════╕
│list              │occurrences             │
╞══════════════════╪════════════════════════╡
│[a, b, b, c, c, c]│[[c, 3], [a, 1], [b, 2]]│
├──────────────────┼────────────────────────┤
│[d, d, d, d, b, b]│[[b, 2], [d, 4]]        │
└──────────────────┴────────────────────────┘

我在列表中使用字符,因为它们使结果更容易理解

UNWIND [['a', 'b', 'b', 'c', 'c', 'c'], ['d', 'd', 'd', 'd', 'b', 'b']] as list
WITH list AS list1, list AS list2
UNWIND list2 AS element
WITH list1, element, COUNT(element) AS count
RETURN list1 AS list, COLLECT(element) AS values, COLLECT(count) AS counts
这导致:

╒══════════════════╤═════════╤═════════╕
│list              │values   │counts   │
╞══════════════════╪═════════╪═════════╡
│[a, b, b, c, c, c]│[c, a, b]│[3, 1, 2]│
├──────────────────┼─────────┼─────────┤
│[d, d, d, d, b, b]│[b, d]   │[2, 4]   │
└──────────────────┴─────────┴─────────┘
答案是:

可能无法动态分配贴图键

但在创建两个元素列表时,它提供了一个不错的选择。使用此方法,查询将变为:

UNWIND [['a', 'b', 'b', 'c', 'c', 'c'], ['d', 'd', 'd', 'd', 'b', 'b']] as list
WITH list AS list1, list AS list2
UNWIND list2 AS element
WITH list1, element, COUNT(element) AS count
WITH list1 AS list, COLLECT(element) AS values, COLLECT(count) AS counts
RETURN
  list,
  EXTRACT(i IN RANGE(0, LENGTH(values) - 1) | [values[i], counts[i]]) AS occurrences
这使得:

╒══════════════════╤════════════════════════╕
│list              │occurrences             │
╞══════════════════╪════════════════════════╡
│[a, b, b, c, c, c]│[[c, 3], [a, 1], [b, 2]]│
├──────────────────┼────────────────────────┤
│[d, d, d, d, b, b]│[[b, 2], [d, 4]]        │
└──────────────────┴────────────────────────┘

我认为它已经足够优雅了。我会接受的。谢谢@不客气。我在另一个堆栈溢出问题中找到了压缩列表的方法,所以请再次检查我的答案。我认为它已经足够优雅了。我会接受的。谢谢@不客气。我在另一个堆栈溢出问题中找到了压缩列表的方法,请再次检查我的答案。