0

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

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,
}
  • 投影的“人”部分展开,过滤为仅包含“docId”大于“23”的结果,限制为 2,然后再次投影。

  • 投影的“总”部分展开(无限制)并计算在内。

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

不幸的是,在 cosmosdb 上,此查询不起作用。结果在表格中

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

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

任何帮助将不胜感激!

4

1 回答 1

1

你需要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))
于 2019-02-14T14:22:58.543 回答