2017-10-27 7 views
1

は:Azure Cosmos Graph戻るには頂点のプロパティを選択するには?私はこのような頂点がある場合

{ 
    "id": "1", 
    "label": "user", 
    "type": "vertex", 
    "outE": { 
    "worksAt": [ 
     { 
     "id": "6e47aa14-0a3a-4e45-8ac4-043ec9f32b50", 
     "inV": "spaceneedle.com.br" 
     } 
    ] 
    }, 
    "properties": { 
    "name": [ 
     { 
     "id": "cce42090-efc5-4bb2-9576-922d19164d98", 
     "value": "Murilo" 
     } 
    ], 
    "domain": [ 
     { 
     "id": "murilo|domain", 
     "value": "spaceneedle.com.br" 
     } 
    ] 
    } 
} 

を使用して、以下グレムリンのような物を持って返すようにプロパティを選択することが可能ですか?

{ 
    "id": "1", 
    "name": "Murilo" 
} 

ありがとうございます!

答えて

3

私はいくつかのオプションを実証するためTinkerPop「現代」のおもちゃのグラフを使用します:

gremlin> graph = TinkerFactory.createModern() 
==>tinkergraph[vertices:6 edges:6] 
gremlin> g = graph.traversal() 
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard] 

あなたはこのような何か行うことができます:

gremlin> g.V(1).valueMap(true,'name') 
==>[label:person,name:[marko],id:1] 

をそれは頂点ラベルが含まれており、 "ラップ(複数のプロパティを考慮して)リスト内に「名前」を追加します。だから、素早く/簡単ではあるが、あなたが求めた出力にはあまりマッチしません。その具体的な出力を得るために、私は次のようになりますどのproject() stepを使用します。

gremlin> g.V(1).project("id","name").by(id).by('name') 
==>[id:1,name:marko] 

あなたには、いくつかの特定のプロパティを持っていない可能性が投影されている頂点の混在している場合は、確実にするためにcoalesce()または類似の手段を使用することができますデフォルト値:

gremlin> g.V().project('id','name','age').by(id).by('name').by(coalesce(values('age'),constant('none'))) 
==>[id:1,name:marko,age:45] 
==>[id:2,name:vadas,age:27] 
==>[id:3,name:lop,age:none] 
==>[id:4,name:josh,age:32] 
==>[id:5,name:ripple,age:none] 
==>[id:6,name:peter,age:35] 
+0

これは私が必要とするものです!:gV(1).project( "id"、 "name")。by(id).by( 'name')はうまくいきます!ありがとうございました!!! –

+0

私はプロジェクトを使って状況を見つけました。異なるプロパティを持つノードがあると、クエリはエラーを返します。プロパティが存在しなくてもデータを取得する方法はありますか? –

+0

はその質問に答えるために私の答えを更新しました –

関連する問題