我有2个收藏品和一个边缘收藏品。用户,文件和FILES_USERS。 我试图获取特定用户的所有“字段”设置为“视频”的FILES文档,而且还从集合FILES中嵌入了另一个文档,但“内容”设置为“预告片”并属于结果中的“视频”。
我尝试了下面的代码,但是它不能正常工作,即时通讯得到很多重复的结果……一团糟。我肯定做错了。
FOR f IN files
FILTER f.what=="video"
LET trailer = (
FOR f2 IN files
FILTER f2.parent_key==f._key
AND f2.what=="trailer"
RETURN f2
)
FOR x IN files_users
FILTER x._from=="users/18418062"
AND x.owner==true
RETURN DISTINCT {f,trailer}
答案 0 :(得分:1)
使用图形查询语法可能会有更好的方法,但是请尝试这样做。根据您的数据模型调整UNIQUE函数。
LET user_files = UNIQUE(FOR u IN FILES_USERS
FILTER u._from == "users/18418062" AND u.owner
RETURN u._to)
FOR uf IN user_files
FOR f IN files
FILTER f._key == uf AND f.what == "video"
LET trailers = UNIQUE(FOR t IN files
FILTER t.parent_key == f._key AND t.what == "trailer"
RETURN t)
RETURN {"video": f, "trailers": trailers}
答案 1 :(得分:1)
好吧,检查以查看是否有TMan建议的重复数据,但是也要检查查询语法。看来您的f子查询和主查询中的x之间没有链接。如果在集合files_users中有用户user / 18418062
的多个记录,这将导致查询可能返回大量重复信息。尝试在主查询中添加联接。像这样:
FOR x IN files_users
FILTER x._from=="users/18418062"
AND x.owner==true
AND x._to == f._id
RETURN DISTINCT {f,trailer}
在相关说明中,如果在执行预告片子查询时遇到性能问题,则可以尝试仅执行联接和array expansion,看看是否适合您的情况