C# 在Neo4jClient中使用展开的密码查询
由于当前版本的Neo4jClient不支持展开,因此我在重写以下Cypher查询时遇到问题:C# 在Neo4jClient中使用展开的密码查询,c#,f#,neo4j,neo4jclient,C#,F#,Neo4j,Neo4jclient,由于当前版本的Neo4jClient不支持展开,因此我在重写以下Cypher查询时遇到问题: MATCH (:A{UId:someByteArray})--(b1:B)-[:C]-(b2:B) MATCH p = (b1)-[:C*]->(b2) WITH b1.someString as s1, b2.someString as s2, p, EXTRACT(c IN RELATIONSHIPS(p) | c.someValue) AS valuesAl
MATCH (:A{UId:someByteArray})--(b1:B)-[:C]-(b2:B)
MATCH p = (b1)-[:C*]->(b2)
WITH b1.someString as s1, b2.someString as s2, p,
EXTRACT(c IN RELATIONSHIPS(p) | c.someValue) AS valuesAlias
UNWIND(valuesAlias) AS va
WITH s1, s2, length(NODES(p)) as pLength, MIN(va) AS minVA
WITH s1, s2, MAX(minVA) as maxMinVA, MIN(pLength) AS minPL
RETURN s1, s2, maxMinVA
上面的查询是的一个变体,基本上需要用REDUCE/CASE语句替换UNWIND/MIN,如下查询所示:
MATCH (:A{UId:someByteArray})--(b1:B)-[:C]-(b2:B)
MATCH p = (b1)-[:C*]->(b2)
WITH b1.someString as s1, b2.someString as s2, p,
EXTRACT(c IN RELATIONSHIPS(p) | c.someValue) AS valuesAlias
WITH s1, s2, p, length(NODES(p)) as pLength,
REDUCE(curVA=9999999999, va in valuesAlias |
CASE
WHEN va < curVA THEN va
ELSE curVA
END
) AS minVA
WITH s1, s2, MAX(minVA) as maxMinVA, MIN(pLength) AS minPL
RETURN s1, s2, maxMinVA
匹配(:A{UId:someByteArray})-(b1:B)-[:C]-(b2:B)
匹配p=(b1)-[:C*]->(b2)
b1.someString为s1,b2.someString为s2,p,
提取(关系中的c(p)| c.someValue)作为valuesAlias
将s1、s2、p、长度(节点(p))作为正压,
减少(曲线A=9999999,va以值表示)|
案例
当va
生成的结果完全相同,包括排序,但我想这通常不能保证。对于记录,Neo4jClient现在支持展开