无法同时获取已过滤的顶点和未过滤的顶点数

Trouble simultaneously fetching filtered vertices and unfiltered vertices count

我正在尝试 return 有限 个匹配模式的顶点,以及总数(非限制) 匹配该模式的顶点数。

g.V()
  .hasLabel("PersonPublic")
  .has('partitionKey', "Q2r1NaG6KWdScX4RaeZs")
  .has('docId', "Q2r1NaG6KWdScX4RaeZs")
  .out("CONTACT_LIST")
  .out("SUBSCRIBER")
  .dedup()
  .order()
    .by("identifier")
    .by("docId")
  .fold()
  .project('people','total')
    .by(
      unfold()
      .has('docId', gt("23")),
      .limit(2)
      .project('type','id')
        .by(label())
        .by(values('docId'))
    )
    .by(unfold().count())

用简单的英语来说,我正在寻找一个人,找到那个人的所有联系人列表,找到这些联系人列表的所有订阅者,对订阅者进行重复数据删除,对订阅者进行排序,在那里暂停以收集所有内容,然后然后以

的形式投影结果
{
  people: [{type: string, id: string}],
  total: number,
}

我的目标是允许对模式进行分页,同时仍然检索与该模式关联的顶点总数。

不幸的是,这个查询在 cosmosdb 上不起作用。结果的形式为

{
  people: {type: string, id: string},
  total: number,
}

并且只有第一人称结果是 returned(而不是数组)。

如有任何帮助,我们将不胜感激!

您需要再次 fold() 投影值,否则,它总是会被修剪到第一个。另外,对于 total 你不需要 unfold(),那只是浪费资源。

g.V()
  .hasLabel("PersonPublic")
  .has('partitionKey', "Q2r1NaG6KWdScX4RaeZs")
  .has('docId', "Q2r1NaG6KWdScX4RaeZs")
  .out("CONTACT_LIST")
  .out("SUBSCRIBER")
  .dedup()
  .order()
    .by("identifier")
    .by("docId")
  .fold()
  .project('people','total')
    .by(
      unfold()
      .has('docId', gt("23"))
      .limit(2)
      .project('type','id')
        .by(label)
        .by('docId')
      .fold()
    )
    .by(count(local))