【问题标题】:neo4j cypher (optional relationships on null endpoints)neo4j cypher(空端点上的可选关系)
【发布时间】:2013-08-09 09:37:49
【问题描述】:

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

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 不为null,则返回luuser(如果存在),否则返回null

我遇到的问题是3.,因为查询的第三行实际上是在说返回满足任一给定关系的任何链接

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

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您可能想使用路径表达式而不是可选关系? 这些路径表达式返回路径的集合。您可以使用 extract / filter 来提取其中的某些部分。

    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) 
    

    【讨论】:

    • 道歉,但如果我尝试上面的密码,我会得到开发人员:Andres 声称:这个执行计划不应该存在。我应该在上面提到我我正在使用 2.0-M03。
    • 好的,我升级到M04,现在错误消失了。但是,现在上面的查询返回 Unknown identifier item, link, user。 有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2021-02-25
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    相关资源
    最近更新 更多