我有一个名为prodSampleNew的集合,其中包含层次结构级别为arangodb中的字段的文档:
{
prodId: 1,
LevelOne: "clothes",
LevelTwo: "pants",
LevelThree: "jeans",
... etc....
}
我想获取层次结构级别并将其转换为自己的文档,以便最终可以使用层次结构构建适当的图形。
我能够使用以下方法提取层次结构的第一级并将其放入新集合中:
for i IN [1]
let HierarchyList = (
For prod in prodSampleNew
COLLECT LevelOneUnique = prod.LevelOne
RETURN LevelOneUnique
)
FOR hierarchyLevel in HierarchyList
INSERT {"name": hierarchyLevel}
IN tmp
但是,必须在顶部输入I IN [1]似乎是错误的,应该有更好的方法。(是的,我对AQL还是很陌生)
任何能找到更好方法的指针都将受到赞赏
答案 0 :(得分:1)
不确定要实现的目标。
FOR i IN [1]
似乎是不必要的,因此您可以直接使用子查询启动AQL查询,以计算层次结构级别1的不同值:
LET HierarchyList = (
FOR prod IN prodSampleNew
COLLECT LevelOneUnique = prod.LevelOne
RETURN LevelOneUnique
)
FOR hierarchyLevel IN HierarchyList
INSERT {"name": hierarchyLevel} IN tmp
结果应该相同。
如果问题更像是“如何从所有层次结构中获得所有级别的不同名称”,那么您可以使用类似的
LET HierarchyList = UNIQUE(FLATTEN(
FOR prod IN prodSampleNew
RETURN [ prod.LevelOne, prod.LevelTwo, prod.LevelThree ]
))
...
产生一个具有1-3级层次结构名称的唯一名称的数组。
这不能回答您的问题,请描述查询应产生的期望结果。