我尝试使用range()
在我的应用中为分页返回部分结果集。作为响应的一部分,我还需要返回整体结果中的记录总数。回复应如下:
{
postcount: 239,
posts: [
{
postID: 1,
postTitle:'First post'
},
{
postID: 2,
postTitle:'Second post'
},
{
postID: 3,
postTitle:'Third post'
}
]
}
我一直试图做这样的工作而没有运气:
g.V().hasLabel('post').as('postcount','posts').select('postcount','posts').by(__.count()).by(__.range(0,2).valueMap())
为每个项目添加postcount = 1
属性。我该如何调整呢?
答案 0 :(得分:1)
您可以使用union
步骤来实现您想要的目标。例如:
g.V().hasLabel("post").union(
__.select("postcount").by(__.count()), // postcount property
__.range(0,2).valueMap() // your range
) //end of union
有关详情,请查看docs
答案 1 :(得分:1)
您可以将其分解为两个查询:
pCount = g.V().hasLabel("post").count().next();
pList = g.V().hasLabel("post").range(0,2).valueMap().toList();
map = ["postcount": pCount, "posts": pList]
答案 2 :(得分:1)
根据Daniel Kuppitz的Gremlin-Users list找到答案:
在3.2.0中:
> g.V().hasLabel("person").fold().project("users","userCount").by(range(local,
> 0, 2)).by(count(local))
在3.2.0之前:
g.V().hasLabel("person").fold().as("users","userCount").select("users","userCount").by(range(local,
> 0, 2)).by(count(local))