映射方法
Response
类的Get()
方法或Alias()
方法返回一个DataItem
,内嵌在查询结果中。您需使用DataItem
的As<Type>()
方法将结果转换成合适的驱动类型。
myQuery, _ := conn.Uql("find().nodes() as n return n{*} limit 5", requestConfig)
nodeList, schemaList, _ := myQuery.Alias("n").AsNodes()
printers.PrintNodes(nodeList, schemaList)
从数据库返回的结果n
包含5个节点,均为NODE类型。AsNodes()
方法将这些节点转换成Node
列表。
DataItem
的类型映射方法:
UQL类型 | UQL别名 | 方法 | 驱动类型 | 描述 |
---|---|---|---|---|
NODE | Any | AsNodes() |
[]Node | 将NODE类型的DataItem 映射为Node 对象的列表 |
NODE | Any | AsFirstNode() |
Node | 将NODE类型的DataItem 中的第一个节点映射为一个Node 对象 |
EDGE | Any | AsEdges() |
[]Edge | 将EDGE类型的DataItem 映射为Edge 对象的列表 |
EDGE | Any | AsFirstEdge() |
Edge | 将EDGE类型的DataItem 中的第一条边映射为一个Edge 对象 |
PATH | Any | AsPaths() |
Path[] | 将PATH类型的DataItem 映射为Path 对象的列表 |
GRAPH | Any | AsGraph() |
Graph | 将GRAPH类型的DataItem 映射为一个Graph 对象 |
TABLE | _graph |
AsGraphSets() |
[]GraphSet | 将别名为_graph 的DataItem 映射为GraphSet 对象的列表 |
TABLE | _nodeSchema , _edgeSchema |
AsSchemas() |
[]Schema | 将别名为_nodeSchema 或_edgeSchema 的DataItem 映射为Schema 对象的列表 |
TABLE | _nodeProperty , _edgeProperty |
AsProperties() |
[]Property | 将别名为_nodeProperty 或_edgeProperty 的DataItem 映射为Property 对象的列表 |
TABLE | _algoList |
AsAlgos() |
[]Algo | 将别名为_algoList 的DataItem 映射为Algo 对象的列表 |
TABLE | _extaList |
AsExtas() |
[]Exta | 将别名为_extaList 的DataItem 映射为Exta 对象的列表 |
TABLE | _nodeIndex , _edgeIndex |
AsIndexes() |
[]Index | 将别名为_nodeIndex 或_edgeIndex 的DataItem 映射为Index 对象的列表 |
TABLE | _nodeFulltext , _edgeFulltext |
AsFullTexts() |
[]Index | 将别名为_nodeFulltext 或_edgeFulltext 的DataItem 映射为Index 对象的列表 |
TABLE | _privilege |
AsPriviliege() |
[]Priviliege | 将别名为_privilege 的DataItem 映射为Priviliege 对象 |
TABLE | _policy |
AsPolicies() |
[]Policy | 将别名为_policy 的DataItem 映射为Policy 对象的列表 |
TABLE | _user |
AsUsers() |
[]User | 将别名为_user 的DataItem 映射为User 对象的列表 |
TABLE | _statistic |
AsStats() |
Stat | 将别名为_statistic 的DataItem 映射为一个Stat 对象 |
TABLE | _top |
AsTops() |
[]Top | 将别名为_top 的DataItem 映射为Process 对象的列表 |
TABLE | _task |
AsTasks() |
[]Task | 将别名为_task 的DataItem 映射为Task 对象的列表 |
TABLE | Any | AsTable() |
Table | 将TABLE类型的DataItem 映射为一个Table 对象 |
ATTR | Any | AsAttr() |
Attr | 将ATTR类型的DataItem 映射为一个Attr 对象 |
驱动类型
所有驱动类型的对象均支持使用getter方法获取字段值,以及使用setter方法设定字段值,即便这些对象并未在下文中明确列出。
Node
Node
对象包含以下字段:
字段 | 类型 | 描述 |
---|---|---|
Name |
string | 别名 |
ID |
string | 点的ID |
UUID |
uint64 | 点的UUID |
Schema |
string | 点的schema |
Values |
object | 点的自定义属性 |
作用在Node
对象上的方法:
方法 |
返回值 |
描述 |
---|---|---|
get("<propertyName>") |
Object | 获取点的指定自定义属性的值. |
set("<propertyName>", <propertyValue> |
设置点的指定自定义属性的值;若指定的<propertyName> 不存在,则为点的Values 增加一个键值对 |
myQuery, _ := conn.Uql("find().nodes() as n return n{*} limit 5", requestConfig)
nodeList, _, _ := myQuery.Alias("n").AsNodes()
println("ID of the 1st node:", nodeList[0].GetID())
println("Name of the 1st node:", nodeList[0].GetSchema())
ID of the 1st node: ULTIPA8000000000000001
Name of the 1st node: account
Edge
Edge
对象包含以下字段:
字段 | 类型 | 描述 |
---|---|---|
Name |
string | 别名 |
From |
string | 边的起点的ID |
To |
string | 边的终点的ID |
FromUUID |
uint64 | 边的起点的UUID |
ToUUID |
uint64 | 边的终点的UUID |
UUID |
uint64 | 边的UUID |
Schema |
string | 边的Schema |
values |
object | 边的自定义属性 |
作用在Edge
对象上的方法:
方法 |
返回值 |
描述 |
---|---|---|
get("<propertyName>") |
Object | 获取边的指定自定义属性的值 |
set("<propertyName>", <propertyValue> |
设置边的指定自定义属性的值;若指定的<propertyName> 不存在,则为边的values 增加一个键值对 |
myQuery, _ := conn.Uql("find().edges() as e return e{*} limit 5", requestConfig)
edgeList, _ := myQuery.Alias("e").AsFirstEdge()
println("Values of the 1st edge:", utils.JSONString(edgeList.GetValues()))
Values of the 1st edge: {"Data":{"datetime":{"Datetime":1847052190913396736,"Year":2019,"Month":1,"Day":6,"Hour":2,"Minute":57,"Second":57,"Macrosec":0,"Time":"2019-01-06T02:57:57Z"},"targetPost":703,"timestamp":{"Datetime":1847052190913396736,"Year":2019,"Month":1,"Day":6,"Hour":2,"Minute":57,"Second":57,"Macrosec":0,"Time":"2019-01-06T02:57:57+08:00"}}}
Path
Path
对象包含以下字段:
字段 | 类型 |
描述 |
---|---|---|
Name |
string | 别名 |
Nodes |
[]Node | 路径中的Node列表 |
Edges |
[]Edge | 路径中的Edge列表 |
NodeSchemas |
object | 路径中全部点schema的映射 |
EdgeSchemas |
object | 路径中全部边schema的映射 |
myQuery, _ := conn.Uql("n().e()[:2].n() as paths return paths{*} limit 5", requestConfig)
pathList, _ := myQuery.Alias("paths").AsPaths()
println("Length of the 1st path:", pathList[0].GetLength())
println("Edge list of the 1st path:", "\n", utils.JSONString(pathList[0].GetEdges()))
println("Information of the 2nd node in the 1st path:", "\n", utils.JSONString(pathList[0].GetNodes()[1]))
Length of the 1st path: 2
Edge list of the 1st path:
[{"Name":"paths","From":"u_10032","To":"u_105","FromUUID":27,"ToUUID":1,"UUID":2784,"Schema":"follow","Values":{"Data":{}}},{"Name":"paths","From":"u_10071","To":"u_10032","FromUUID":33,"ToUUID":27,"UUID":2876,"Schema":"follow","Values":{"Data":{}}}]
Information of the 2nd node in the 1st path:
{"Name":"paths","ID":"u_10032","UUID":27,"Schema":"account","Values":{"Data":{"birthYear":1988,"fRate":null,"gender":"male","industry":"Transportation","name":"floatingnote","new":null,"new1":null,"new2":null,"records":null,"tags":null}}}
Graph
Graph
对象包含以下字段:
字段 | 类型 |
描述 |
---|---|---|
Name |
string | 别名 |
Nodes |
[]Node | 路径中的Node列表 |
Edges |
[]Edge | 路径中的Edge列表 |
NodeSchemas |
object | 路径中全部点schema的映射 |
EdgeSchemas |
object | 路径中全部边schema的映射 |
myQuery, _ := conn.Uql("n(as n1).re(as e).n(as n2).limit(3) with toGraph(collect(n1), collect(n2), collect(e)) as graph return graph", requestConfig)
resp, _ := myQuery.Alias("graph").AsGraph()
println("Node IDs:")
for _, item := range resp.Nodes {
println(item.ID)
}
println("Edge UUIDs:")
for _, item := range resp.Edges {
println(item.UUID)
}
Node IDs:
ad304833
u604131
ad534784
ad6880
Edge UUIDs:
363347
774098
527786
3
GraphSet
GraphSet
对象包含以下字段:
字段 |
类型 | 描述 |
---|---|---|
ID |
string | 图集ID |
Name |
string | 图集名称 |
Description |
string | 图集描述 |
TotalNodes |
string | 图集总点数 |
TotalEdges |
string | 图集总边数 |
Status |
string | 图集状态(已挂载 MOUNTED、挂载中 MOUNTING 或未挂载 UNMOUNTED) |
myQuery, _ := conn.Uql("show().graph()", nil)
resp, _ := myQuery.Alias("_graph").AsGraphSets()
for _, item := range resp {
if item.Status == "UNMOUNTED" {
println(item.Name)
}
}
DFS_EG
cyber
cyber2
Schema
Schema
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Name |
string | Schema名称 |
Properties |
[]Property | Schema属性列表 |
Desc |
string | Schema描述 |
Type |
string | Schema类型(点或边) |
DBType |
DBType | Schema数据库类型(点或边) |
Total |
int | Schema中点/边的总数量 |
myQuery, _ := conn.Uql("show().node_schema()", requestConfig)
resp, _ := myQuery.Alias("_nodeSchema").AsSchemas()
for _, item := range resp {
println(item.Name, "has", item.Total, "nodes")
}
default has 0 nodes
user has 1092511 nodes
ad has 846811 nodes
Property
Property
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Name |
string | 属性名称 |
Desc |
string | 属性描述 |
Lte |
bool | 属性的LTE状态 |
Schema |
string | 属性关联的Schema |
Type |
PropertyType | 属性数据类型 |
SubTypes |
[]PropertyType | 属性数据类型列表 |
Extra |
string | 属性的额外信息 |
myQuery, _ := conn.Uql("show().node_property(@user)", requestConfig)
resp, _ := myQuery.Alias("_nodeProperty").AsProperties()
for _, item := range resp {
if item.Lte {
println("LTE-ed property name:", item.Name)
}
}
LTE-ed property name: occupation
Algo
Algo
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Name |
string | 算法名称 |
Desc |
string | 算法描述 |
Version |
string | 算法版本 |
Params |
object | 算法的参数 |
myQuery, _ := conn.Uql("show().algo()", requestConfig)
resp, _ := myQuery.Alias("_algoList").AsAlgos()
println(utils.JSONString(resp[0]))
{"Name":"bipartite","Desc":"bipartite check","Version":"1.0.1","Params":{}}
Exta
Exta是由用户开发的自定义算法。
Exta
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Name |
string | Exta名称 |
Author |
string | Exta作者 |
Version |
string | Exta版本 |
Detail |
string | Exta的YML配置文件内容 |
myQuery, _ := conn.Uql("show().exta()")
resp, _ := myQuery.Alias("_extaList").AsExtas()
println("Exta name:", utils.JSONString(resp[0].Name))
Exta name: "page_rank"
Index
Index
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Name |
string | 索引名称 |
Properties |
string | 索引的属性名称 |
Schema |
string | 索引的schema名称 |
Status |
string | 索引状态,包括done和creating |
Size |
string | 索引大小(字节) |
Type |
string | 索引类型,包括DBNODE和DBEDGE |
myQuery, _ := conn.Uql("show().index()", requestConfig)
resp, _ := myQuery.Alias("_nodeIndex").AsIndexes()
for i := 0; i < len(resp); i++ {
println("Schema name:", resp[i].Schema)
println("Properties:", resp[i].Properties)
println("Size:", resp[i].Size)
}
Schema name: user
Properties: shopping_level
Size: 4608287
Schema name: ad
Properties: price
Size: 7828760
Full-text
一个 FullText
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Name |
string | 索引名称 |
Properties |
string | 索引的属性名称 |
Schema |
string | 索引的schema名称 |
Status |
string | 索引状态,包括done和creating) |
Size |
string | 索引大小(以字节为单位) |
Type |
string | 索引类型,包括DBNODE和DBEDGE |
myQuery, _ := conn.Uql("show().fulltext()", requestConfig)
resp, _ := myQuery.Alias("_edgeFulltext").AsFullTexts()
for i := 0; i < len(resp); i++ {
println("Fulltext name:", resp[i].Name)
println("Schema name:", resp[i].Schema)
println("Properties:", resp[i].Properties)
}
Fulltext name: nameFull
Schema name: review
Properties: content
Privilege
Privilege
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
GraphPrivileges |
[]string | 图权限 |
SystemPrivileges |
[]string | 系统权限 |
myQuery, _ := conn.Uql("show().privilege()", requestConfig)
resp, _ := myQuery.Alias("_privilege").AsPrivilege()
println(utils.JSONString(resp[0].SystemPrivileges))
["TRUNCATE","COMPACT","CREATE_GRAPH","SHOW_GRAPH","DROP_GRAPH","ALTER_GRAPH","MOUNT_GRAPH","UNMOUNT_GRAPH","TOP","KILL","STAT","SHOW_POLICY","CREATE_POLICY","DROP_POLICY","ALTER_POLICY","SHOW_USER","CREATE_USER","DROP_USER","ALTER_USER","GRANT","REVOKE","SHOW_PRIVILEGE"]
Policy
Policy
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Name |
string | 策略名称 |
GraphPrivileges |
GraphPrivileges | 策略中的图权限和对应图集 |
SystemPrivileges |
[]string | 策略中的系统权限 |
PropertyPrivileges |
PropertyPrivileges | 策略中的属性权限 |
Policies |
[]string | 策略中的策略 |
myQuery, _ := conn.Uql("show().policy()", requestConfig)
resp, _ := myQuery.Alias("_policy").AsPolicies()
for i := 0; i < len(resp); i++ {
println(resp[i].Name)
}
operator
manager
User
User
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Username |
string | 用户名 |
Password |
string | 密码 |
Create |
string | 用户创建时间 |
GraphPrivileges |
GraphPrivileges | 授予用户的图权限和对应图集 |
SystemPrivileges |
[]string | 授予用户的系统权限 |
Policies |
[]string | 授予用户的策略 |
PropertyPrivileges |
PropertyPrivileges | 授予用户的属性权限 |
myQuery, _ := conn.Uql("show().user('Tester')", requestConfig)
resp, _ := myQuery.Alias("_user").AsUsers()
println("Username:", resp[0].UserName)
println("Created at:", resp[0].Create)
println("Graph privileges:", utils.JSONString(resp[0].GraphPrivileges))
println("System privileges:", utils.JSONString(resp[0].SystemPrivileges))
println("Property privileges:", utils.JSONString(resp[0].PropertyPrivileges))
Username: Tester
Created at: 1970-01-01 08:00:00
Graph privileges: {"Ad_Click":["FIND_EDGE","FIND_NODE"],"DFS_EG":["UPDATE","INSERT"]}
System privileges: ["MOUNT_GRAPH"]
Property privileges: {"edge":{"deny":[],"read":[],"write":[]},"node":{"deny":[],"read":[],"write":[["miniCircle","account","name"]]}}
Stats
Stats
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
CPUUsage |
string | CPU使用百分比 |
MemUsage |
string | 内存使用量(兆字节) |
ExpiredDate |
string | 许可证过期日期 |
CPUCores |
string | CPU核数 |
Company |
string | 公司名称 |
ServerType |
string | 服务器类型 |
Version |
string | 服务器版本 |
myQuery, _ := conn.Uql("stats()", requestConfig)
resp, _ := myQuery.Alias("_statistic").AsStats()
println("CPU usage::", resp.CPUUsage, "%")
println("Memory usage:", resp.MemUsage, "%")
CPU usage: 16.926739 %
Memory usage: 11558.082031 %
Process
Process
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
ProcessId |
string | 进程ID |
Status |
string | 进程状态 |
ProcessUql |
string | 与进程一起运行的UQL |
Duration |
string | 任务已运行时长,单位为秒 |
myQuery, _ := conn.Uql("top()", requestConfig)
resp, _ := myQuery.Alias("_top").AsTops()
println(resp[0].ProcessId)
a_5_15518_2
Task
Task
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Param |
object | 算法参数和对应值 |
TaskInfo |
TaskInfo | 任务信息包括TaskID ,AlgoName ,StartTime ,TaskStatus 等 |
ErrorMsg |
string | 任务的错误信息 |
Result |
object | 算法结果、统计数据及其对应值 |
myQuery, _ := conn.Uql("show().task()", requestConfig)
resp, _ := myQuery.Alias("_task").AsTasks()
println("Algo name:", resp[0].TaskInfo.AlgoName)
println("Parameters:", utils.JSONString(resp[0].Param))
println("Result:", utils.JSONString(resp[0].Result))
Algo name: louvain
Parameters: {"min_modularity_increase":"0.001","phase1_loop_num":"20"}
Result: {"community_count":"1228589","modularity":"0.635263","result_files":"communityID"}
Table
Table
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Name |
string | 表格名称 |
Headers |
[]Property | 表头 |
Rows |
[]Row | 表格行 |
作用在Table
对象上的方法:
方法 |
返回值 |
描述 |
---|---|---|
ToKV() |
[]Values | 将表的所有行转换成键值列表 |
myQuery, _ := conn.Uql("find().nodes() as n return table(n._id, n._uuid) as myTable limit 5", requestConfig)
resp, _ := myQuery.Alias("myTable").AsTable()
println("2nd row in table:", utils.JSONString(resp.ToKV()[1]))
2nd row in table: {"Data":{"n._id":"u604510","n._uuid":2}}
Attr
Attr
对象包含以下字段:
字段 |
类型 |
描述 |
---|---|---|
Name |
string | 别名 |
PropertyType |
PropertyType | Attr类型 |
ResultType |
ResultType | Attr类型描述 |
Rows |
Row | Attr行 |
myQuery, _ := conn.Uql("find().nodes({@ad}) as n return n.brand limit 5", requestConfig)
resp, _ := myQuery.Alias("n.brand").AsAttr()
println(utils.JSONString(resp.Rows))
[14655,14655,14655,14655,434760]