7

我正在尝试运行一个gremlin 查询,该查询通过某个字段将某个标签的顶点分成几个组(假设它是“displayName”),并将组数限制为n并且每个组中的项目数也限制为n

有没有办法做到这一点?

由于 group().by() 返回项目列表,我尝试使用展开(),然后对内部项目应用限制。我设法限制了返回的组数,但无法限制每个组中的项目数。

这是我用来限制组数的查询:

gV().hasLabel('customLabel').group().by('displayName').unfold().limit(n)

// Expected result:(if n == 2)
[
 {
  "displayName1": [
   { // item 1 in first group
   },
   { // item 2 in first group
   }
  ]
 },
 {
  "displayName2": [
   { // item 1 in second group
   },
   { // item 2 in second group
   }
  ]
 }
]

// Actual result: (when n == 2)
[
 {
  "displayName1": [
   { // item 1 in first group
   },
   { // item 2 in first group
   },
   ... // all the items are included in the result
  ]
 },
 {
  "displayName2": [
    { // item 1 in second group
    },
    { // item 2 in second group
    },
    ... // all the items are included in the result
  ]
 }
]

目前,通过上面的查询,我只得到 2 个组“displayName1”和“displayName2”,每个组都包含其中的所有项目,而不仅仅是预期的 2 个。

4

1 回答 1

3

如果要限制答案,可以通过定义组中每个键的值来实现:

g.V().hasLabel('customLabel')
       .group()
       .by('displayName')
       .by(identity().limit(n).fold())
        .unfold().limit(n)

于 2019-07-14T14:09:50.567 回答