在 arangodb insert 中使用 collect 创建新文档
using collect in arangodb insert to create new documents
我有一个名为 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
但是,必须在顶部放置 for I IN [1] 似乎是错误的,应该有更好的方法。(是的,我对 AQL 还很陌生)
如能提供更好的方法,我们将不胜感激
不确定您要实现的目标。
然而,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
结果应该是一样的。
如果问题更像 "how can I get all distinct names of levels from all hierarchies",那么您可以使用
LET HierarchyList = UNIQUE(FLATTEN(
FOR prod IN prodSampleNew
RETURN [ prod.LevelOne, prod.LevelTwo, prod.LevelThree ]
))
...
生成一个数组,其中包含级别 1-3 的层次结构级别的唯一名称。
如果这不能回答您的问题,请描述查询应产生的预期结果。
我有一个名为 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
但是,必须在顶部放置 for I IN [1] 似乎是错误的,应该有更好的方法。(是的,我对 AQL 还很陌生)
如能提供更好的方法,我们将不胜感激
不确定您要实现的目标。
然而,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
结果应该是一样的。
如果问题更像 "how can I get all distinct names of levels from all hierarchies",那么您可以使用
LET HierarchyList = UNIQUE(FLATTEN(
FOR prod IN prodSampleNew
RETURN [ prod.LevelOne, prod.LevelTwo, prod.LevelThree ]
))
...
生成一个数组,其中包含级别 1-3 的层次结构级别的唯一名称。
如果这不能回答您的问题,请描述查询应产生的预期结果。