[英]How to use array value in filtering for ArangoDB?
stack overflow community i am relatively new for arango and wants to build an AQL query using two collection please help me stack overflow community 我对 arango 比较陌生,想使用两个集合构建一个 AQL 查询,请帮助我
first collection:- user JSON:- "user_id": "abcd", "program_info": [ { "program_id": 101, } ]第一个集合:- 用户 JSON:- "user_id": "abcd", "program_info": [ { "program_id": 101, } ]
Second collection:- program JSON:- { "program_id":101, "program_name": "test" }第二个集合:- program JSON:- { "program_id":101, "program_name": "test" }
i am building query to get info of program name using both collection if user_id will supplied FOR u IN user FILTER u.user_id =="abcd" FOR p IN program FILTER p.program_id == u.program_info[*].program_id RETURN p.program_name我正在构建查询以使用两个集合获取程序名称的信息,如果 user_id 将提供给用户 FILTER u.user_id =="abcd" FOR p IN program FILTER p.program_id == u.program_info[*].program_id RETURN p .program_name
but i am getting blank [] array please help me但我得到空白 [] 数组请帮助我
The expression u.program_info[*].program_id
returns an array with all program_id
attributes from the objects in the program_info
array.表达式
u.program_info[*].program_id
返回一个数组,其中包含program_info
数组中对象的所有program_id
属性。 However, you are comparing this array with the scalar value p.program_id
which does match and therefore you get an empty array.但是,您将此数组与确实匹配的标量值
p.program_id
进行比较,因此您得到一个空数组。 I suppose you want to check if p.program_id
is contained in user's program_info
.我想您想检查
p.program_id
是否包含在用户的program_info
中。 That could be done like this:可以这样做:
FOR u IN user
FILTER u.user_id =="abcd"
FOR p IN program
FILTER p.program_id IN u.program_info[*].program_id
RETURN p.program_name
However, for better index usability it might even be better to rewrite your query like this (provided you have an index on program_id
for the program
collection):但是,为了更好的索引可用性,像这样重写查询可能会更好(前提是您在
program
集合的program_id
上有一个索引):
FOR u IN user
FILTER u.user_id =="abcd"
FOR pid IN u.program_info[*].program_id
FOR p in program
FILTER p.program_id == pid
RETURN p.program_name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.