Loading

图数据库入门教程(七)结果处理

1. count()

统计当前结果的数量

//1. 查询所有节点数量
g.V().count()
//2. 查询label是person的节点数量
g.V().hasLabe('person').count()
//3. 查询张三好友的数量
g.V().has('person','name','张三').both().count()

2. limit(n)

限制返回结果数

//1. 返回一个节点
g.V().limit(1)
//2. 查询label是person的节点,返回2个节点
g.V().hasLabe('person').limt(2)
//3. 查询张三好友,返回两个好友
g.V().has('person','name','张三').both().limt(2)

3. skip(n)

一般和limit(n)搭配用,可以用来分页

//1. 查询张三好友,返回前10个好友
g.V().has('person','name','张三').both().skip(0).limt(10)
//2. 查询张三好友,返回前10-20之间的好友
g.V().has('person','name','张三').both().skip(0).limt(10)

4. range(start,end)

查询指定区间的数据

//1. 查询张三好友,返回前10个好友
g.V().has('person','name','张三').both().range(0,10)
//1. 查询张三好友,返回前10-20之间的好友
g.V().has('person','name','张三').both().range(10,20)

注:range(0,10),返回 0-9角标的数据,range(10,20),返回10-19角标的数据

5. dedup()

对结果去重

//1. 查询张三好友,去除重复的还有
g.V().has('person','name','张三').both().dedup()

6. values()

查询指定属性

//1. 查询张三好友,返回它们的名称
g.V().has('person','name','张三').both().dedup().values('name')

输出

[
    "李四",
    "王五",
    "孙八"
]

7. id()

返回id属性

//1. 查询张三好友,去除重复的返回id
g.V().has('person','name','张三').both().dedup().id()

输出

[
    77952,
    77992,
    82048
]

8. project().by()

g.V().has('person', 'name', '张三').both().project('name','level').by('name').by(constant(1))

输出

[
    {
        "name": "李四",
        "level": 1
    },
    {
        "name": "王五",
        "level": 1
    },
    {
        "name": "孙八",
        "level": 1
    }
]

从当前结果中提取字段到map中,可以看到上面我们提取了name字段,level字段,其中level字段用一个常量填充,常量需要用constant()修饰。

上面的代码还有另一种写法

g.V().has('person', 'name', '张三').both().as('name','level').select('name', 'level').by('name').by(constant(1))

输出

[
    {
        "name": "李四",
        "level": 1
    },
    {
        "name": "王五",
        "level": 1
    },
    {
        "name": "孙八",
        "level": 1
    }
]

fold

将结果放入list

unfold

将结果展开

g.V().has('code','AUS').valueMap().unfold()
posted @ 2022-08-29 10:35  树先生1024  阅读(204)  评论(0编辑  收藏  举报