欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php neo4j图数据库查询与遍历

程序员文章站 2022-05-28 20:28:34
...

在上一篇博客中,介绍了php连接neo4j图数据库以及基本使用,博客地址:

https://blog.csdn.net/u013090676/article/details/81435944

本文继续介绍php 对neo4j图数据库进行查询,遍历,下面直接上代码:

1、查询节点以及关系:

$result = $client->run('MATCH (m:person{name:"suika"})-[r]-(n) RETURN m,r,n');
foreach ($result->getRecords() as $r) {
    //获取节点标签
    print_r($r->get('n')->labels());
    //获取节点所有属性的值
    print_r($r->get('n')->values());
    //获取节点所有属性的key
    print_r($r->get('n')->keys());
    //获取节点某个属性的值,不存在则返回空
    print_r($r->get('n')->value("uid"));
    //获取关系类型
    print_r($r->get('r')->type());
    //获取关系属性
    print_r($r->get('r')->value('time'));exit();
}

2、遍历与节点相关联的节点以及节点所处的层级:

$result = $client->run('Match (m:person{name:"marisa"})-[r:friend*]->(n:person) return n,r');
foreach ($result->getRecords() as $r) {
    //关系层级(不是最小层级)
    print_r(count($r->get('r')));
    //节点
    print_r($r->get('n')->value("name"));

}

3、获取两个节点间的所有路径:

$result = $client->run('Match p=(m:person{name:"marisa"})-[r:friend*]->(n:person{name:"sakuya"}) return p');
foreach ($result->getRecords() as $r) {
    //路径
    $path = $r->pathValue("p");
    //路径序列(节点与关系交叉组成)
    $seq = $r->pathValue("p")->sequence;
    //节点
    $nodes = $path->nodes();
    //关系
    $relationships = $path->relationships();
    for($i = 0;$i < count($seq);$i++){
        if($i%2 == 1){
            if($nodes[$seq[$i]]){
                print_r($nodes[$seq[$i]]->value("name"));
            }else{
                print_r("存在空记录");
            }
        }else{
            if($relationships[$seq[$i]-1]){
                $type = $relationships[$seq[$i]-1]->type();
                $time = $relationships[$seq[$i]-1]->value("time");
            }else{
                print_r("存在空记录");
            }
        }
	print_r("->");
    }
}

 

相关标签: neo4j