7

特定のラベルの頂点を特定のフィールド (「displayName」であると仮定)によって複数のグループにグループ化し、グループの数をnに制限し、各グループ内のアイテムの数もnに制限するグレムリン クエリを実行しようとしています。

それを達成する方法はありますか?

group().by() はアイテムのリストを返すので、 unfold() を使用してから、内側のアイテムに制限を適用してみました。返されるグループの数を制限することはできましたが、各グループのアイテムの数を制限することはできませんでした。

グループの数を制限するために使用したクエリは次のとおりです。

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
  ]
 }
]

現在、上記のクエリでは、「displayName1」と「displayName2」の 2 つのグループしか取得できませんが、それぞれのグループには、期待どおり 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 に答える