【问题标题】:How to search neo4j for a node by a property name?如何通过属性名称在 Neo4j 中搜索节点?
【发布时间】:2013-07-05 23:16:13
【问题描述】:

我正在尝试设置一些数据,并且对密码查询相当陌生。我正在做一个项目,将节点和关系创建为足球队的一部分。

例如,我目前仅在游戏和裁判上创建节点。我的逻辑是我读入比赛的数据,如果裁判不作为节点存在,则创建他/她。如果在未来的比赛中我看到一个已经存在的裁判,我只是将他们与比赛联系起来,而不是创建一个重复的记录。我正在执行以下操作,并想在尝试填充数据之前看看我的逻辑是否有意义。

//JUST CREATED A GAME NODE called $GameNode



 //let's search if the referee exists 

            $queryString = "START n=node({nodeId}) ".
                            "MATCH (n)<-[:REFEREED]-(x)".
                            "WHERE x.name = {name}".
                            "RETURN x";
            $query = new Everyman\Neo4j\Cypher\Query($client, $queryString, array('nodeId' => 0, 'name' => $referee['referee_name']));
            $result = $query->getResultSet();

            $referee = 0;

            if (count($result)==0)
            {

               //create referee as he/she does not exist
           $referee= $client->makeNode();
           $referee->setProperty('name', $referee['referee_name'])

                    ->save();  
            }

           else
           {
               //let's point the referee to this law case also

               $referee = $client->getNode($result['x']->getProperty('id'));

           }


            $referee->relateTo($GameNode, 'REFEREED')
                     ->save();

提前多谢

【问题讨论】:

标签: php neo4j neo4jphp


【解决方案1】:

这应该可以,但会进行很多往返。

您只能将 Cypher 用于此任务:

Neo4j 1.9 使用CREATE UNIQUE

START root=node({nodeId}) 
CREATE UNIQUE (root)<-[:REFEREED]-(referee {name: {name}})
RETURN referee

在 Neo4j 2.0 中你可以使用MERGE

MERGE (referee:Referee {name: {name}})
RETURN referee

还请为您的标识符使用更好的名称。

【讨论】:

  • 感谢您的帮助。这行得通吗? START referee=node:node_auto_index(name = {name}) ". "CREATE UNIQUE (referee)-[:REFEREED]->(game)". "RETURN referee
  • 其实没有。我尝试了以下方法: START game=node({nodeId}) CREATE UNIQUE (referee{label:{name}})-[:REFEREED{ label:'REFEREED' }]->(game) RETURN referee;我正在为同一个裁判创建多个节点。如果裁判已经存在,我只希望裁判自动链接到比赛。有小费吗?同时我会尝试阅读文档
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多