Oracle里面还经常用到的就是表与表之间的组合查询,arangoDb在讲解这里的用法的时候,新增了一个Traits,来关连Charaters的traits属性。
FOR c IN Characters
RETURN DOCUMENT("Traits", c.traits)
FOR c IN Characters
RETURN DOCUMENT("Traits", c.traits)[*].en
FOR c IN Characters
RETURN MERGE(c, {
traits: (
FOR key IN c.traits
FOR t IN Traits
FILTER t._key == key
RETURN t.en
)
})
看第一个语句,for循环拿到Charaters的每一条记录c,然后用c的traits属性去Traits查对应的记录,因为之前说过DOCUMNET函数支持查多条记录返回一个数组。但是其实这里有一个隐性的条件,因为Document函数其实用的是_key属性去查的,也就是说traits属性里面的值必须要与Traits的_key属性能关联上;
第二个语句,跟第一个语句类似,不同的是只返回Traits里面每一条记录的en属性;
第三个语句,就更能看出上面说的那个隐性的条件了,只是多用了一个merge函数;另外要注意的就是c.traits属性其实是个数组,所以多了一层for循环。
。