php neo4j图数据库查询与遍历

在上一篇博客中,介绍了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("->");
    }
}

 

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/u013090676/article/details/81490026
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞