6

ツリー ノードを含むドキュメント コレクションと、次のような「の子」を含むエッジ コレクションがあります。

Folders=[
{_key:"1",name:"Root1"},
{_key:"2",name:"Root2"},
{_key:"3",name:"Root1.Node1"},
{_key:"4",name:"Root1.Node2"}]

FolderRelations=[
{_from:"Folders/3",_to:"Folders/1"},
{_from:"Folders/4",_to:"Folders/1"}
]

次に、そのツリーのルート オブジェクト (アウトバウンド リレーションを持たないすべてのオブジェクト) であるフォルダー アイテムを特定したいと思います。

たぶん、私はSQLの考え方に少し行き詰まっています。次のようなことを実行したいと思います:

SELECT * 
FROM Folders 
WHERE NOT EXIST (SELECT * FROM FolderRelations WHERE FolderRelations.FromKey=Folders.Key)

トラバーサルとパス機能を使用するために、最初から頂点がありません。

4

1 に答える 1

7

問題を解決する AQL の例を次に示します。

for f in Folders
filter LENGTH( EDGES(FolderRelations, v._id, "outbound")) == 0
return f

階層の上にフォルダーがないすべての頂点のリストを取得します。

ただし、注意してください: {key:1} を保存しても目的の効果は得られません。次のように設定する必要があります。

{_key: "1"}

_key は内部キー属性に使用され、文字列である必要があります。

于 2014-01-19T18:14:33.390 に答える