私のグラフでは、ユーザーは多くのアイテムに接続されており、各アイテムは再帰的に多くのサブアイテムに分割できます。私のアイテムには特定の順序があるため、データをモデル化するために次の 2 つのオプションを検討しています。
ここで、特定のユーザー ID の 2 つのレベルのアイテムを取得するクエリを作成したいと考えています。この AQL は私の最初の試みです。
for itemId in (for b in board filter b._from == @_from sort b.order return b._to)
for item1 in (for t in item filter t._id == itemId return keep(t, '_id', 'title'))
return merge(item1, {board: (
for itemId2 in (for b in board filter b._from == item1._id sort b.order return b._to)
for t in item filter t._id == itemId2 return keep(t, '_id', 'title')
)})
クエリは機能し、次のような結果が出力されます。
[
{
"title": "item 1",
"_id": "item/41260117498",
"board": [
{
"title": "item 4",
"_id": "item/42205736442"
},
{
"title": "item 5",
"_id": "item/42208423418"
}
]
},
{
"title": "item 2",
"_id": "item/41260772858",
"board": []
},
{
"title": "item 3",
"_id": "item/41883233786",
"board": []
}
]
これは問題ありませんが、このような単純なトラバーサルに対してクエリが不必要に複雑になっているように感じます。誰かがより良いものを作成するのを手伝ってくれませんか?