在我的图表中,一个用户连接到许多项目,每个项目可以递归地划分为许多子项目。由于我的项目有一个特定的顺序,我正在考虑这两个选项来建模我的数据:
现在我想创建一个查询来检索给定用户 ID 的两个级别的项目。这个 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": []
}
]
这很好,但我觉得我的查询对于这样一个简单的遍历来说是不必要的复杂。有人可以帮我创造一个更好的吗?