在arangodb插入中使用collect创建新文档

时间:2018-09-24 21:47:40

标签: arangodb aql

我有一个名为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还是很陌生)

任何能找到更好方法的指针都将受到赞赏

1 个答案:

答案 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级层次结构名称的唯一名称的数组。

这不能回答您的问题,请描述查询应产生的期望结果。