2017-12-04 13 views
0

私はこのGremlinクエリをCosmos DBデータベースから再度実行しています。実際の結果はgremlinクエリのpartial tree()を取得

{ p1: { f1, .. }, p2: { f1, ... } } 

のようなものですが、どのように、私は唯一の友人を得ることができます

g.V().hasLabel('person').as('p') 
    .out('friends').as('f') 
    .select('f') 
    .optional(outE()).tree() 

友人「F」は存在する人のために、すべての人のP 'を返し、友人「F」を含め、どの'f'と任意の 'f'のエッジ?

{ f1, f2, ... } 

GraphSON形式での実際の結果の一部:

{ 
    "3": { 
    "key": {"id": "1",...}, 
    "value": { 
     "2": { 
     "key": { 
      "id": "2", 
      "label": "person", 
      "type": "vertex" 
     }, 
     "value": { ... } 
     } 
    } 
    }, 
    "1": { 
    "key": {"id": "1", ... }, 
    "value": { 
     "2": { 
     "key": { 
      "id": "2", 
      "label": "person", 
      "type": "vertex" 
     }, 
     "value": {...} 
     } 
    } 
    } 
} 

答えて

1

unfold()木結果と値を選択し、このような何か。この方法で、ルートノードを取り除くことができます。

g.V().hasLabel('person'). 
    out('friends'). 
    optional(outE()).tree(). 
    unfold(). 
    select(values) 
+0

私はグレムリンクエリの出力形式にきめの細かい制御を持っているユーザーボイスするための提案を掲示し、あなたが一緒に従うのが好きならば、このリンクをご覧ください。これは私が実際に探していたもの、つまりそれがエッジを含む '頂点'を認識するようにしたので、.tree()の代わりに.union(identity()、outE() –

0

これまでのところ、私はグレムリンについて学んだことをもとに自分の質問に答えるために、GraphSONMode.Normalは、トリックを行います。

ネスト/複雑な投影を持つクエリ(例:project('parent').by(project('member').by(...)))の場合でもこれが唯一の方法ですが、出力エッジのみが必要な入力および出力の両方の補助リストを返すという欠点があります。 、これは私の質問への答えですが https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/32738743-add-more-options-for-graphsonmode

関連する問題