首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j Cypher总线路由选择

Neo4j Cypher总线路由选择
EN

Stack Overflow用户
提问于 2013-05-21 17:56:57
回答 1查看 542关注 0票数 1

我对Cypher还是新手,我想知道在Neo4j Cypher中是否可能出现以下情况:

当我想询问从第一站到第四站应该乘坐什么公共汽车时,输出应该是(由最少数目的交汇处组成):

  1. 站1 ->路线1 ->站3 ->路线3 ->站4站
  2. 站1 ->路线2 ->站3 ->路线3 ->站4站

但并不是所有可能的组合:

  1. 站1 ->路线1 ->站2 ->路线1 ->站3 ->路线3 ->站4
  2. 站1 ->路线1 ->站2 ->路线2 ->站3 ->路线3 ->站4
  3. 站1 ->路线2 ->站2 ->路线1 ->站3 ->路线3 ->站4
  4. 站1 ->路线2 ->站2 ->路线2 ->站3 ->路线3 ->站4

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-23 00:54:50

如果没有条件表达式(CASE/WHEN现在在2.0中),这是很困难的。这和我几分钟试过的时间一样近。您必须从结果关系集合中提取开始节点。

代码语言:javascript
复制
start st1=node:node_auto_index(name="station1"), st4=node:node_auto_index(name="station4") 
match p=st1-[r*]->st4 
with reduce(acc=[], route in rels(p): 
  case 
    when length(acc) > 0 and last(extract(a in acc: a.name)) = route.name then acc 
    else acc + route 
  end) as reducedRoutes 
return reducedRoutes, length(reducedRoutes) as len 
order by len;

http://console.neo4j.org/r/koe6fo

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16676476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档