2017-08-29 6 views
0

Greyscinの構文を使用するCosmos DB のGraph APIを試しています。Greyminクエリーで特定のVertexのエッジを出入りする

グラフに多数のユーザー(頂点)があり、それぞれが他のユーザーに「知っている」プロパティを持っています。これらのうちのいくつかは、アウト・エッジ(outE)であり、他のものは、どのように関係が作成されたかに依存してエッジ(inE)にある。 私は今、特定のユーザー(Vertex)のすべての「知っている」関係を返すクエリを作成しようとしています。 私は簡単に経由INEやOUTEのいずれかのIDを取得することができます:

'7112138f-fae6-4272-92d8-4f42e331b5e1'は私が照会していたユーザのIDですが、私は、これはアウトかであるかどうかを事前に知っていない
g.V('7112138f-fae6-4272-92d8-4f42e331b5e1').inE('knows') 
g.V('7112138f-fae6-4272-92d8-4f42e331b5e1').outE('knows') 

(例えば、ユーザーが「知っている」ラベルを持つエッジを持っている場合と外に出ている場合)。 私は投影とOR演算子と物事例えば:

g.V('7112138f-fae6-4272-92d8-4f42e331b5e1').where(outE('knows').or().inE('knows')) 

が、その私が欲しいデータを私に戻ってきていないの様々な組み合わせを使用してみました。

私が欲しいのは、すべてのinEおよびoutEのIDのリストで、指定された頂点のラベルを '知っている'ことです。

「knowows」や「friendOf」などの双方向の関連付けをモデル化するための簡単な方法がありますか?あなたは、この場合にbothEステップを使用することができます

おかげ

答えて

5

g.V('7112138f-fae6-4272-92d8-4f42e331b5e1').bothE('knows')

+0

驚くばかりです。これをotherV()と組み合わせることで、この頂点が知っているか知っている人の頂点を得ることができます。これはまさに私が望むものです。 TinkerPop ToCにリストされていないので、両方のEが存在していたことさえ知りませんでした:http://tinkerpop.apache.org/docs/current/reference!ありがとう – LDJ

+3

'both'を使って、必要な頂点を得ることもできます。 http://tinkerpop.apache.org/javadocs/current/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#both-java.lang.String...- – pantalohnes

+0

さらに良い!ありがとう。 – LDJ

関連する問題