#记录工作中的一些总结
----连接Nebula Graph
./nebula-console -addr 207.207.75.106 -port 9669 -u root -p nebula
-----创建图空间
create space basketballplayer(partition_num=15,replica_factor=1,vid_type=fixed_string(30))
-----查看图空间
show spaces
----创建Tag以及Edge type
create TAG player(name string, age int)
create edge follow(degree int)
----删除tag
drop tag xxx
删除前需先删除索引
----插入点和边
insert vertex player(name, age) values "player23":("Michael Jordan",59)
insert vertex people(name, age) values "people1":("aaa",1),"people2":("bbb",2),"people3":("ccc",3),"people4":("ddd",4),"people5":("eee",5),"people6":("fff",6)
insert vertex tem(name) values "team1":("Bulls"), "team2":("Nets"), "team3":("Sixers");
insert edge service(start_year, end_year) values "player23" -> "team1":(1996, 2003),"player3" -> "team3":(1996, 2008),"player1" -> "team1":(1999, 2009),"player11" -> "team2":(2020, 2022),"player11" -> "team2":(2020, 22);
insert edge follow(degree) values "player7" -> "player1":(90)
--两个点间插入多条边
insert edge e1() valuees "10->11"@1:() 建立rank为1的边
----创建索引
create TAG INDEX team_index_1 on tem();
create edge INDEX follow_index_1 on follow(degree);
--重建索引确保能对已存在数据生效
:sleep
REBUILD TAG INDEX team_index_1;
--为单属性创建索引
create TAG INDEX player_index_1 on player(name(20));
--创建复合索引
create TAG INDEX player_index_2 on player(name,age);(失败)
create edge INDEX service_index_2 on service(start_year,end_year)(成功)
--删除索引
drop edge index service_index_2
----go语句
--go from "player11" over follow yield id($$)
yield:指定该查询需要返回的值或结果
$$:表示边的终点
//沿着边follow查找年龄大于等于10的球员并返回他们的名字,同时重命名对应的列
go from "player11" over follow where properties($$).age >= 10 yield properties($$).name AS starName
go from "t->0_0_people_36" over peopleHoldHouse yield properties($$) AS starName(返回房子的字段)
//沿着边follow查找连接的球员,然后检索这些球员的球队
go from "player11" over follow yield dst(edge) AS id | go from $-.id over service yield properties($$).name AS Team,properties($^).name AS Player
go from "t->0_0_people_36" over peopleHoldHouse yield dst(edge) AS id (返回房子的vid)(peopleName不能有多余的空格)
//返回入方向的点
go from "t->0_0_people_36" over peopleFriendShip reversely yield src(edge) as friend
//只返回第二跳中的边
go 2 to 2 steps from 't->1___0_0' over * yield edge as relation(出度)
//返回两跳的朋友
go 2 steps from "player7" over follow yield dst(edge)
----fetch语句
--fetch prop on player "player23" yield properties(vertex)
----lookup语句
lookup on service where service.start_year == 1996 yield src(edge),dst(edge)
(若为同一个TAG类型,或不允许)
--统计TAG为player的点的数量
lookup on player yield id(vertex) | yield count(*) as Player_Count
----match语句 match比较慢
match (player) return player limit 5(必须加limit)
||
match (x:player) return x
--根据某个属性索引
match (v:player{name:"Allen Iverson"}) return v
--索引TAG为service的全部属性值
match () -[e:service]-() return e
--查询和欧文有关的球员和球队
match p=(v:player{name:"Kyrie Irving"}) -->(v3) return p
--返回路径
match p=(v:player{name:"Kyrie Irving"})-[*3..3]->() return p 只能返回出度的路径
----find path
寻找两个点之间经过的边的路径
find all path from 'player11' to 'player3' over * yield path as pathes;
----get subgraph
根据跳数获得相应子图(go语法更快)
get subgraph 2 steps from 'player11' yield vertices as nodes,edges as relationships
get subgraph 2 steps from 't->0___1_0' yield vertices as nodes,edges as relationships
返回的是0到n跳的子图
----查询当前所有的点和边的数量(数据有变化时,需要重新执行submit语句(异步的作业))
submit job stats
show stats
"insert vertex people(column1, column2, column3, column4, column5,"
+ " column6, column7, column8, column9, column10) values '"
+ peopleName
+ "':(''"
get subgraph 1 steps from 1 both relation
//停止某一作业
stop job 197
insert vertex lawCase(column) values "t->2_2000_lawCase_999":("sdfg58gs45df123gytgf");
go 2 steps from "t->0_0_people_21" over peopleFriendShip,peopleHoldCar bidirect yield distinct dst(edge) as name union go 2 steps from "t->0_0_people_21" over peopleFriendShip,peopleHoldCar reversely yield distinct src(edge) as name