使用arangodb insert中的collect创建新文档

使用arangodb insert中的collect创建新文档,arangodb,aql,Arangodb,Aql,我有一个名为prodSampleNew的集合,其中的文档在arangodb中具有层次结构级别作为字段: { prodId: 1, LevelOne: "clothes", LevelTwo: "pants", LevelThree: "jeans", ... etc.... } 我希望将层次结构级别转换为它们自己的文档,以便最终使用层次结构构建适当的图形 我能够通过以下方法提取层次结构的第一级,并将其放入新集合中: for i IN [1

我有一个名为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
然而,必须在[1]的顶端加上一个for I似乎是错误的,应该有更好的方法。(是的,我对AQL还相当陌生)


如果有任何关于更好的方法的建议,我们将不胜感激

不确定您到底想实现什么。 [1]中i的
似乎没有必要,因此您可以直接使用子查询启动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生成具有层次结构级别唯一名称的数组


这不应该回答您的问题吗?请描述查询应该产生的预期结果。

谢谢!您的第二个查询正是我试图做的,这样我就可以为每个层次创建单独的文档。它就像一个符咒。