neo4j - neo4j javascript API:排序和收集 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 的结果作为一个集合,所以我需要在密码查询中应用 collect ;但是收集应该在联合之后应用,因为 QUERY_1 和 QUERY_2 都可以返回给定 col1 的值
QUERY_1 和 QUERY_2 已经相当复杂了,我认为没有办法通过没有 UNION 的单个查询来获取这些查询的输出
对于仅密码的代码,我知道有apoc.cypher.run 但我无法使其在session.run代码中按预期工作
解决方案
在 Neo4j 4.0 中,Cypher 中增加了一个新的子查询功能,它支持post-UNION 处理。
您可以使用该功能来做您想做的事。这是新的 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
推荐阅读
- python - 使用 Popen、Serial 和 MQTT 的复杂应用程序中的线程
- c - 如何获取viewCell中按钮的id
- postgresql - 从 PostgreSQL 导出大型数据集 (JSON)
- scala - Spark Structured Streaming writeStream 输出一个全局 csv
- json - 支持参数化案例类的 json 反序列化器
- git - Gatsby/Netlify 项目不在 git repo 的根目录中
- javascript - TypeScript如何将过滤器对象数组过滤为单个新对象
- python - SnakeMake 不激活 conda 环境
- android - 约束布局组
- loops - 是否可以使用 ForEach 更改脚本任务中的对象变量值,然后将其存储在对象变量中?