2016-05-10 11 views
0

私はアプリケーション内でのさらなる処理のために外部データをArangoDBに保存するアプリケーションを作成しています。ここではPhotosetsPhotosを話しているとします。エッジコレクションを介してノードのIDを取得する

使用されているAPIの性質上、私はPhotosをロードできるので、Photosetsを取得する必要があります。 Photosets APIの返信には、PhotoのIDがあり、後でPhotoを取得するためのIDがあります。そこで、photosInSetsというエッジコレクションを作成し、PhotosetsPhotosの間にエッジを保存しましたが、Photosはまだありません。

その後、APIを使用して読み込むために必要なすべてのリストを取得する必要があります。すべてのIDは数値です。しかし...これは素敵な解決策のように見えない

FOR edge 
IN photosInSets 
RETURN DISTINCT TO_NUMBER(
    SUBSTITUTE(edge._from, "photos/", "") 
) 

:現時点では、私はPhotosを必要とされるすべてのIDを取得するために、次のAQLクエリを使用します。私は(少なくとも)コレクション名を削除する文字列操作を取り除きたいと思います。それをどうやってやるの?

+0

答えはあなたのニーズを満たしていましたか?そうでない場合、何が欠けていますか?もしあなたがそれを受け入れることができますか? – dothebart

答えて

1

これは、photosInSetsエッジコレクションに参加して写真コレクションに戻って見つけることができます。

次のようになりますクエリしてみてください。これは、バックphotosコレクション内の_idとphotoInSetsで_from参照に合流

FOR e IN photoInSets 
LET item = (FOR v IN photos FILTER e._from == v._id RETURN v._key) 
RETURN item 

は、その後、コレクション名を持っていませんphotosから_keyを引っ張りますその一部として

写真の項目を見ると、システム属性として_id、_key、_revがあることがわかります。文字列が必要な場合は_key値を使用しても問題ありません。なぜ_keyを公開できないのかがわからない限り、独自の一意のIDを実装する必要はありません。

少し操作すれば、どのphoto._keyがphotoSetのメンバであるかを示すオブジェクトの配列を返すこともできます.2つのLETコマンドを持つだけで、両方の結果が返されます。 1つは写真を見て、もう1つは写真セットを見る。

私は公式のArangoDBサポートではありませんが、これは別の方法があれば興味があります。

+0

事は...私が書いたように、写真はまだありません、 'photos'コレクションは空です。前述のクエリを使用して、取得する必要のある「写真」のリストを取得するので、空のコレクションに参加できません。ありがとう、しかし! –

+0

これで、Photosetsと写真を作成し、後でそれらの間の関係をphotosInSetsに追加しますか? photosInSetsに関係を追加するには、そのテーブルに有効な_from値と_to値が必要です。そのため、Photosetsエントリと写真エントリがそこに存在する必要があります。 –

+0

私はセット内の写真のIDを知っていますが、それだけです。ですから、私はエッジを作成するのに十分な情報を持っていますが、ドキュメントは作成していません。さて、空の写真ドキュメントを作成して後で更新することはできますが... –

関連する問題