我目前有三个集合需要路由到一个端点。我想让课程集合排序它,然后从该课程,我必须使用嵌套的子查询来获取随机审查(可能有多个绑定到同一课程),并获得相关的用户。
User{
name:
_id:User/4638
key: ...}
Review{
_from: User/4638
_to: Course/489
date: ....}
Course{
_id: Course/489
title: ...}
我遇到的问题是基于评论获取用户。我尝试过MERGE,但似乎将查询限制为一次使用,而应该有多个。下面是使用LET的当前输出。
"course": {
"_key": "789",
"_id": "Courses/789",
"_rev": "_ebjuy62---",
"courseTitle": "Pandas Essential Training",
"mostRecentCost": 15.99,
"hours": 20,
"averageRating": 5
},
"review": [
{
"_key": "543729",
"_id": "Reviews/543729",
"_from": "Users/PGBJ38",
"_to": "Courses/789",
"_rev": "_ebOrt9u---",
"rating": 2
}
],
"user": []
},
这是我当前使用的LET子查询方法。我想知道是否有任何方法可以传递或嵌套子查询,以便用户可以读取review。目前我尝试传递LET var,但由于显示了一个空白数组,因此在输出中没有读取。
FOR c IN Courses
SORT c.averageRating DESC
LIMIT 3
LET rev = (FOR r IN Reviews
FILTER c._id == r._to
SORT RAND()
LIMIT 1
RETURN r)
LET use = (FOR u IN Users
FILTER rev._from == u._id
RETURN u)
RETURN {course: c, review: rev, user: use}`
1条答案
按热度按时间bvjveswy1#
第一个
LET
查询rev
的结果是一个只有一个元素的数组。您可以用两种方法重写完整的查询:1.将
rev
设置为LET查询结果的第一个元素:我在自己的项目中使用了这个变体。
1.访问第二个
LET
查询中rev
的第一个元素:这是未经测试的,语法可能需要轻微的改变。你必须看看没有任何评论的情况-我不能说在这种情况下如何表现从我的头上。