neo4j cypher(空端点上的可选关系)

时间:2013-08-08 15:33:39

标签: neo4j cypher

我已将我的复杂密码简化为核心问题。

START focus=node(2), user=node(20) 
MATCH focus-[:USER_FEED_LIST*1..15]->pointer-[:POINTER]->item,
item-[l?:NOTICE_LINK]->link<-[lu?:POST_UPVOTE]-user
RETURN link, ID(item) as item_id, item, l, lu

基本上我想要实现的目标如下:

  1. 返回链接列表中的每个项目
  2. 对于每个项目,如果存在,则返回llink,否则返回null
  3. 如果link不为空,则返回luuser(如果存在),如果不是,则返回
  4. 我遇到的问题是3.因为查询的第三行实际上是在说返回任何满足给定关系的链接

    例如,如果我的链接列表链接了10个项目,我需要查询始终返回10行(llinklu如果它们不存在则为空)。

1 个答案:

答案 0 :(得分:0)

可能你想要使用路径表达式而不是可选关系? 这些路径表达式返回路径集合。您可以使用提取/过滤器来提取这些部分。

START focus=node(2), user=node(20) 
MATCH focus-[:USER_FEED_LIST*1..15]->pointer-[:POINTER]->item,
RETURN ID(item) as item_id, item, (item-[:NOTICE_LINK]->link<-[:POST_UPVOTE]-user)