neo4j使用

docker run -itd --network=host --name=neo4j docker.io/library/neo4j:latest
# 访问,用户密码默认是 neo4j
http://www.xxxx.com:7474/browser/
# 创建User1/User2节点,并写入数据id
create(User1:Info{id: 1});
create(User2:Info{id: 2});
# 对数据进行先匹配然后才能进行更新关系
MATCH (User1:Info),(User2:Info)
WHERE User1.id = 1 AND User2.id = 2
CREATE (User1)-[r:邀请]->(User2)

# 先删除关系,再删除节点
MATCH (User1:Info)-[r:邀请]->()
WHERE User1.id = 1
DELETE r
# 删除节点
MATCH (User1:Info)
WHERE User1.id = 1
DELETE User1

# 简单粗暴删除所有节点及节点相关的关系
match (n) detach delete n


MATCH (User1:Info),(User2:Info)
return User1,User2;
# 获取指定等级的下级
MATCH (User47:Info)-[r*0..]->(result)
WHERE User47.id = 47
return result;

# 获取所有下级
# 获取所有上级
MATCH (User1:Info)<-[r*0..]-(result)
WHERE User1.id = 1
return result;
# 获取推荐关系最长的
  • 创建

<?php

$userlist = [
    ['4', 9],
    ['1', 4],
    ['9', 37],
    ['1', 47],
    ['47', 49],
];
$str = '';
$user = [];
foreach ($userlist as $p => $c) {
    $user[$c[0]] = $c[0];
    $user[$c[1]] = $c[1];
}
foreach ($user as $userid) {
    // create改为merge不重复创建节点
    $str .= "merge(User$userid:Info{id: $userid});";
}
foreach ($userlist as $p => $c) {
    $PID = $c[0];
    $CID = $c[1];
    $str .= <<<EOF

    MATCH (User$PID:Info),(User$CID:Info)
    WHERE User$PID.id = $PID AND User$CID.id = $CID
    CREATE (User$PID)-[r:邀请]->(User$CID);
EOF;
}
echo $str;