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
我必须 运行 基于查询并集的查询,我必须对结果应用 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