neo4j javascript API:排序并收集联合匹配

neo4j javascript API: SORT and COLLECT a UNIONS MATCH

我必须 运行 基于查询并集的查询,我必须对结果应用 COLLECT 和 SORT (我在使用 neo4j 3.5)

所以我的起始伪代码如下:

var session = driver.session();
  return session
.run("QUERY_1 return value as COL1, value2 as COL2 UNION QUERY_2 return value as COL1, value2 as COL",{paramslit}) 
.then(result => {
      session.close();
      return result.records.map(record => { return new RESULT(...)}
});
    })
    .catch(error => {
      session.close();
      throw error;
    });

我的问题是我需要将col2的结果作为一个集合来获取,所以我需要在cypher查询中对其应用collect;但 collect 应该在 union 之后应用,因为 QUERY_1 和 QUERY_2 都可以 return 给定 col1

的值

QUERY_1 和 QUERY_2 已经相当复杂了,我不认为有一种方法可以在没有 UNION

的情况下通过单个查询获取这些查询的输出

对于仅密码代码,我知道有 apoc.cypher.run 但我无法使其在 session.run 代码

中按预期工作

在 neo4j 4.0 中,一个新的 subquery feature was added to Cypher, and it supports post-UNION processing.

您可以使用该功能做您想做的事。这是新的 Cypher 伪代码:

CALL {
  QUERY_1 return value as COL1, value2 as COL2
  UNION
  QUERY_2 return value as COL1, value2 as COL2
}
RETURN COL1, COLLECT(COL2) as SET_OF_COL2