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))