используя метод сбора в arangodb для создания новых документов - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть коллекция под названием 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

Однако необходимоa для I IN [1] вверху кажется неправильным, и что должен быть лучший способ (да, я довольно новичок в AQL)

Любые указатели на лучший способ сделать это будут оценены

1 Ответ

0 голосов
/ 25 сентября 2018

Не уверен, что именно ты пытаешься достичь.Однако 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.

Если это не отвечает на ваш вопрос, опишите желаемый результат, который должен дать запрос.

...