【问题标题】:neo4j cypher: multiple queries using WITH keywordneo4j cypher:使用 WITH 关键字的多个查询
【发布时间】:2013-05-08 12:20:01
【问题描述】:

我正在尝试运行一个包含两个部分的查询

start cat=node(21) match cat-[:HAS_KEYWORD]->(word)-[:FOUND_IN]->doc return doc

此查询工作正常并返回结果

start cat=node(21) match cat-[:HAS_KEYWORD]->composit-[:COMPOSITE_OF]->(word)-[:FOUND_IN]-single

这也可以并重新调整空集

但是当我把它们结合起来时

start cat=node(21) match cat-[:HAS_KEYWORD]->(word)-[:FOUND_IN]->doc
with cat,doc                                                        
 match cat-[:HAS_KEYWORD]->composit-[:COMPOSITE_OF]->xx-[:FOUND_IN]->single    
 return doc,single

没有返回结果

它有什么问题?

【问题讨论】:

  • 那里可能不是最好的主意,但是您是否尝试过使用单个匹配子句: match single (word)-[:FOUND_IN]->doc

标签: neo4j cypher graph-databases


【解决方案1】:

问题是你这里有一个空集,所以第二个匹配会将你的整个查询带到一个空集。

也许您正在寻找UNION 功能?这实际上是在 2.0 中出现的。

【讨论】:

    【解决方案2】:

    将您的第二个MATCH 更改为OPTIONAL MATCH,所以:

    START cat=node(21)
    MATCH (cat)-[:HAS_KEYWORD]->(word)-[:FOUND_IN]->(doc)
    OPTIONAL MATCH (cat)-[:HAS_KEYWORD]->(composit)-[:COMPOSITE_OF]->(xx)-[:FOUND_IN]->(single)
    RETURN doc,single
    

    您的 OPTIONAL MATCH 子句针对您在 MATCH 子句中找到的所有内容执行,但在未找到结果时不会减少记录集。

    http://docs.neo4j.org/chunked/stable/query-optional-match.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 2012-04-27
      • 2014-11-27
      • 2014-11-03
      相关资源
      最近更新 更多