我有一个像这样的复杂查询:
MATCH path = allShortestPaths( ... )
WITH path, reduce(x={
specificStamp: "",
specificCount: 0,
...
},
r IN relationships(path) |
CASE WHEN ...
THEN {
specificStamp: some-expr(x),
specificCount: another-expr(x),
...
}
...
END
) AS pobj
ORDER BY pobj.specificStamp, pobj.specificCount
RETURN head(COLLECT(path)) AS path, pobj.specificStamp AS stamp, COUNT(*) AS cnt
ORDER BY length(path), stamp
真实代码中的逻辑更复杂,包括嵌套的CASE
和许多复杂的THEN以及一些重复的表达式......
为简化问题,最好将reduce逻辑放入单独的函数中。但是Neo4J用户定义的函数只能返回一个值。
哪种类型的返回值对应于此cypher表达式:{specificStamp: "", specificCount: 0}
?
可能是Object
?但根据documentation Object
表示ANY
类型。
可能是Map
?但是哪个地图模板? Map<String,String>
与Map<String,Integer>
答案 0 :(得分:0)
返回Map<String,Integer>
或Map<String,Object>
请参阅此有效类型:https://neo4j.com/docs/developer-manual/current/extending-neo4j/cypher-functions/#writing-udf
答案 1 :(得分:0)
Map<String,Object>
已经足够了。
不需要Cypher查询中的其他类型转换。 用户函数的字符串字段为字符串。很久很久。