【发布时间】:2018-07-03 15:02:53
【问题描述】:
我的问题很简单。我一直在尝试编写一个使用聚合函数的 Cypher 查询 - min()。
我正在尝试使用 Neo4j 3.4 中提供的新空间函数来获取与特定节点最近的节点。我的查询目前如下所示:
MATCH (a { agency: "Bus", stop_id: "1234" }), (b { agency: "Train" })
WITH distance(a.location, b.location) AS dist, a.stop_id as orig_stop_id, b.stop_id AS dest_stop_id
RETURN orig_stop_id,min(dist)
location 属性是一个point 属性,这个查询实际上做了我想做的事情,除了一件事:我还想在结果中包含dest_stop_id 字段,以便我实际上可以知道哪个其他节点对应于这个最小距离,但是 Neo4j 似乎隐式聚合了 RETURN 子句中不在聚合函数内的所有字段,结果是我只得到所有对的列表(orig_stop_id, dest_stop_id) 以及它们的距离与仅获得最小值和对应的 dest_stop_id。有没有办法指定结果集中哪些字段应该分组?
在 SQL 中,GROUP BY 允许您指定此项,但我在 Cypher 中找不到类似的函数。
提前致谢,如果您需要任何额外信息,请告诉我。
【问题讨论】: