2016-08-08 11 views
0

this questionの後、CoDEManXから優れた答えを得ました。以前の結果(返されたノードの配列)を使用してその中のすべてのリンクを照会する方法を尋ねますコレクション。ArangoDB:ノードの配列からすべてのリンクを取得

は基本的に私は、クエリのリンクについて

FOR v IN 0..100 ANY "Entity/node_id" 
EntityRelation OPTIONS  
{uniqueVertices: "global"} 
RETURN v._key 

の結果を使用することを目的:

"FOR c IN EntityRelation FILTER c._from==" + "\"" + 
node._id + "\"" + " OR c._to==" + "\"" + 
node._id + "\"" + " RETURN c"; 

私はそれに近づく必要がありますどのように?問い合わせの上

FOR v IN 0..100 ANY "Entity/node_id" EntityRelation OPTIONS {uniqueVertices: "global"} 
    FOR vv, c IN ANY v EntityRelation 
    RETURN c 

が返される各ノードのトラバーサルを実行するため、ループ(実際にトラバース)ネストされたを使用しています。

答えて

2

は、私は2つの可能な解決策をあなたが正確に達成したいのかわからないんだけど、ここにいます外側のトラバースによって、vを開始頂点として使用し、エッジの方向を無視します。内部トラバーサルのすべてのエッジ文書が返されます。

あなたが外トラバーサルのエッジをしたい場合は、これも必要ありません。

FOR v, e IN 0..100 ANY "Entity/node_id" EntityRelation OPTIONS {uniqueVertices: "global"} 
    RETURN e 

後でクエリでトラバーサル結果にアクセスする場合は、サブクエリにそれを回すと、結果を割り当てます変数:

LET nodes = (
    FOR v IN 0..100 ANY "Entity/node_id" EntityRelation OPTIONS {uniqueVertices: "global"} 
    RETURN v._id 
) 
FOR node IN nodes 
    FOR vv, c IN ANY node EntityRelation 
    RETURN c 

最初のトラバーサルはドキュメントIDのみを返します。これらのノードから別のトラバーサルを開始するには十分であり、このクエリでは頂点の他のプロパティは使用されません。文書全体を返すことも有効ですが、効率的ではありません。

+0

申し訳ありませんが、私は質問を段階的に行う方法がとても悪いです。私はちょうどノードを与えられた任意の深さからすべてのリンクを取得したい。ノードA、B、C、Dが接続されている場合、ノードAとB、CとDが同じであると選択すると、リンクが生成されます。しかし、あなたの答えから、私はノードを取得するためにネストされたものを使用して、それらのノードからのインバウンドリンクだけを照会するようにしました。 –

+0

私は、特定のノードに接続されているすべてのノードを見つけて、これらのノードを指すすべてのノードを返します。ネストのアプローチは、私が推測するこの場合の最良の解決策です。 – CoDEmanX

関連する問題