【问题标题】:Cypher Query isn't returning any NodesCypher Query 没有返回任何节点
【发布时间】:2014-06-15 22:12:40
【问题描述】:

我在接收一些节点和关系时遇到了一些问题,我希望这里有人能真正帮助我找出错误!

分解:

我有三个节点:

  1. 一个标记为 :Person 属性为 firstname 的节点
  2. 标记为:事件的节点
  3. 一个节点标记为:具有属性 id 的问题

基本上关系如下:

(p:Person)-[:CREATED_EVENT]->(e:Event)
and
(e:Event)-[:ANSWERED]->(q:Question)

我尝试查询:

MATCH 
(p:Person)-[:CREATED_EVENT]->(e:Event)<-[:ANSWERED]-(q:question)
WHERE p.firstname = "foo" AND q.id=2
RETURN p, e, q;

但是我的查询根本没有返回任何节点。

我还没有创建任何索引。但如果我没看错,你只能在属性上创建索引,它只会加快你的查询速度。

谁能发现错误?

感谢您的帮助!

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    假设您的数据是正确的,那么看起来您在 ANSWERED 关系中指定了错误的方向:

    MATCH 
    (p:Person)-[:CREATED_EVENT]->(e:Event)-[:ANSWERED]->(q:question)
    WHERE p.firstname = "foo" AND q.id=2
    RETURN p, e, q;
    

    如果您仍然没有得到结果,最好在http://console.neo4j.org/?init=0创建一个演示问题的示例图

    【讨论】:

    • 谢谢你是正确的答案!你能不能启发我对那个话题的看法。我认为方向是双向的。 (我以为我在手册的某个地方读到过)
    • 如果要在查询时省略方向并将其视为双向关系,则 MATCH (p:Person)-[:CREATED_EVENT]->(e:Event)-[:ANSWERED] -(q:question) WHERE p.firstname = "foo" AND q.id=2 RETURN p, e, q;也可以(离开方向)。但是,如果您指定方向,则只会匹配该方向上的关系。
    • 啊,好的,谢谢!我一直认为你必须给一个方向!你救了我很多天!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2013-10-08
    相关资源
    最近更新 更多