阅读量:0
引言
nGQL(NebulaGraph Query Language)是用于操作 NebulaGraph 的查询语言。它的语法类似于 Cypher,但有自己独特的特性。以下是一些 nGQL 的基本语法和操作示例,以帮助你入门。
基本概念
- 节点(Vertex):图中的点,具有唯一的ID和标签。
- 边(Edge):连接两个节点的线,有类型和方向。
- 属性(Property):节点和边可以有属性,用键值对表示。
基础语法
1.图空间
#1.创建图空间,vid_type选择FIXED_STRING(30) CREATE SPACE test_space(partition_num=15, replica_factor=1, vid_type=FIXED_STRING(30)); #vid_type选择INT64) CREATE SPACE test_space(partition_num=15, replica_factor=1, vid_type=INT64); #2.查看所有图空间 show spaces #3.使用图空间 use test_space #4.删除图空间 drop space test_space
2.标签
#1.创建标签 create tag person(name string null, gender string null,age int null ,birthday date null) #2.查看所有标签 show tags #3.查看标签属性 describe tag person #4.删除标签 drop tag person #5.创建索引并重建索引 create tag index i_person_name_age on person(name(50),age) rebuild tag index i_person_name_age create tag index i_person_name on person(name(50)) rebuild tag index i_person_name #6.查看索引 show tag indexes #7.查看索引属性 describe tag index i_person_name #8.删除索引 drop tag index i_person_name #9.插入数据 insert vertex person(name, gender, age, birthday) values "1":("zhangsan","男", 25,date("1999-08-01")), "2":("lisi","男",24,date("2000-09-03")), "3":("xiaopang","男",24,date("2000-08-02")) #10.查询所有数据 match (n:person) return n #查询单条数据 fetch prop on person "2" yield person.name,person.gender,person.age,person.birthday #11.删除节点 delete vertex "1" #12.更新节点属性 update vertex "1" set person.age=30
3.边类型
#1.创建边类型 create edge like(likeness double null) #2.查看边类型 show edges #3.查看边属性 describe edge like #4.删除边类型 drop edge like #5.创建索引并重建索引 create edge index i_like_likeness on like(likeness) rebuild edge index i_like_likeness #6.查看索引 show edge indexes #7.查看索引属性 describe edge index i_like_likeness #8.删除索引 drop edge index i_like_likeness #9.插入数据 insert edge like(likeness) values "1"->"2":(0.98), "2"->"3":(0.56) #10.查询所有数据 match (n:person)-[e:like]->(m:person) return n,e,m #查询单条数据 fetch prop on like "1"->"2" yield like.likeness #11.删除边 delete edge like "2"->"3" #12.更新边属性 update edge "1"->"2" of like set like.likeness=0.88
4.复杂用法
#1.查询 match (n:person) where n.person.age>10 and n.person.name=="zhangsan" return n match (a)-[e:like]->(b) where e.likeness > 0.80 return a,e,b match (n:person) where n.person.name in["zhangsan","lisi"] return n #2.使用聚合函数 match (n:person) return AVG(n.person.age) match (n:person) return n.person.gender,COUNT(*) #3.排序 match (n:person) return n.person.name, n.person.age as age order by age ASC match (a)-[e:like]->(b) return a, e.likeness as l,b order by l DESC