Gremlin:Return 结果与结果一起计数
Gremlin: Return result count along with results
我正在尝试 return 使用 range()
在我的应用程序中进行分页的部分结果集。我还需要 return 总体结果中的记录总数作为响应的一部分。响应应如下所示:
{
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
属性。我该如何调整?
您可以使用 union
步骤来实现您想做的事情。示例:
g.V().hasLabel("post").union(
__.select("postcount").by(__.count()), // postcount property
__.range(0,2).valueMap() // your range
) //end of union
有关详细信息,请查看 docs
您可以将其分解为两个查询:
pCount = g.V().hasLabel("post").count().next();
pList = g.V().hasLabel("post").range(0,2).valueMap().toList();
map = ["postcount": pCount, "posts": pList]
根据 Daniel Kuppitz 在 Gremlin-Users list 上找到的答案:
In 3.2.0:
> g.V().hasLabel("person").fold().project("users","userCount").by(range(local,
> 0, 2)).by(count(local))
Prior 3.2.0:
g.V().hasLabel("person").fold().as("users","userCount").select("users","userCount").by(range(local,
> 0, 2)).by(count(local))
我正在尝试 return 使用 range()
在我的应用程序中进行分页的部分结果集。我还需要 return 总体结果中的记录总数作为响应的一部分。响应应如下所示:
{
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
属性。我该如何调整?
您可以使用 union
步骤来实现您想做的事情。示例:
g.V().hasLabel("post").union(
__.select("postcount").by(__.count()), // postcount property
__.range(0,2).valueMap() // your range
) //end of union
有关详细信息,请查看 docs
您可以将其分解为两个查询:
pCount = g.V().hasLabel("post").count().next();
pList = g.V().hasLabel("post").range(0,2).valueMap().toList();
map = ["postcount": pCount, "posts": pList]
根据 Daniel Kuppitz 在 Gremlin-Users list 上找到的答案:
In 3.2.0:
> g.V().hasLabel("person").fold().project("users","userCount").by(range(local,
> 0, 2)).by(count(local))
Prior 3.2.0:
g.V().hasLabel("person").fold().as("users","userCount").select("users","userCount").by(range(local,
> 0, 2)).by(count(local))