获取所有第一代节点neo4j的计数

时间:2017-05-12 02:58:30

标签: graph neo4j

我的数据结构非常简单。一个标签称为客户,与另一个被推荐的客户具有一对一的关系。检索由此产生的所有引用节点程度的每个节点的计数的正确查询是什么。 换句话说,如果数据库组成 CustomerA推荐了CustomerB, CustomerB推荐了CustomerC 结果表应该是:

Customer   1st gen referrals   2nd gen referrals
A           1                   1
B           1                   0
C           0                   0

1 个答案:

答案 0 :(得分:0)

您可以在节点上匹配并找到所需模式的大小:

<?php
   if(isset($_POST['new']) && $_POST['new']==1)
    {

        $id_doc=$_REQUEST['id_doc'];
        $query = "SELECT * from doc where id_doc='".$id_doc."'"; 
        $result = mysqli_query($connection, $query) or die ( mysqli_error());
        $row = mysqli_fetch_assoc($result);

        $title =$_REQUEST['title'];
        $date = $_REQUEST['date'];
        $from_to = $_REQUEST['from_to'];
        $details = $_REQUEST['details'];
        $d_location = $_REQUEST['d_location'];
        $d_stat = $_REQUEST['d_stat'];

        $update="update doc set title='".$title."', date='".$date."', from_to='".$from_to."', details='".$details."', d_location='".$d_location."', d_stat='".$d_stat."' where id_doc='".$id_doc."'";
        mysqli_query($connection, $update) or die(mysql_error());
        $status = "File Record Updated Successfully. </br></br><a href='v_doc.php'>View Updated Record</a>";
        echo '<p style="color:#FF0000;">'.$status.'</p>';
    }else {
        // here some else code
    }
?>

修改

至于返回所有级别推荐的计数,这可能是一个昂贵的查询,具体取决于您的数据的互连方式。

你可以尝试一下,如果它需要太长时间或挂起,你可能想切换到APOC Procedures,特别是MATCH (c:Customer) RETURN c as Customer, size((c)-[:REFERRED]->()) as firstGenRef, size((c)-[:REFERRED*2]->()) as secondGenRef ,它使用NODE_GLOBAL唯一性只保留一个路径到每个遇到的节点,通常表现更好。

apoc.path.spanningTree()

这将为您提供连续的每个客户,以及收集的每一代的生成和推荐数量的地图,直至每个客户的最大生成深度。