Порядок взаимных узлов по вхождению orientdb

Я пытаюсь выполнить следующий запрос графа в orientdb, и он работает

      select nearTo as c1,nearTo.id,nearTo.name, count(nearTo) as repetition,level,path  from ( 
  MATCH {class: GNode, where: (id = 5)} 
  -has-> {as: connection, while: ($depth <= 1), where: ($depth <= 1)}  
  -has-> {as: nearTo, while: ($depth < 3), where: ($depth > 1), depthAlias: level,pathAlias: path} 
  RETURN nearTo,level,path
)
group by nearTo order by repetition desc

Проблема с этим запросом заключается в том, что он также соответствует узлам в соединении, если соединение возвращается, поэтому я попробовал следующие запросы, и ни один из них не сработал.

      1) 
select nearTo,nearTo.id,nearTo.name, count(nearTo) as repetition,level,path  from ( 
  MATCH {class: GNode, where: (id = 5)} 
  -has-> {as: connection, while: ($depth < 2), where: ($depth <= 1)}  
  -has-> {as: nearTo, while: ($depth < 4), where: ($depth > 1), depthAlias: level,pathAlias: path} 
  
  RETURN nearTo,level,path
) where nearTo not in [connection]
group by nearTo order by repetition desc

2) 
select nearTo,nearTo.id,nearTo.name, count(nearTo) as repetition,level,path  from ( 
  MATCH {class: GNode, where: (id = 5)} 
  -has-> {as: connection, while: ($depth < 2), where: ($depth <= 1)}  
  -has-> {as: nearTo, while: ($depth < 4), where: ($depth > 1), depthAlias: level,pathAlias: path} 
  
  RETURN nearTo,level,path
) where nearTo not in [(MATCH {class: GNode, where: (id = 5)} 
  -has-> {as: c, while: ($depth < 2), where: ($depth <= 1)} RETURN c)]
group by nearTo order by repetition desc

3) 
select nearToFinal,nearToFinal.id,nearToFinal.name, count(nearToFinal) as repetition,level,path  from ( 
  MATCH {class: GNode, where: (id = 5)} 
  -has-> {as: connection, while: ($depth < 2), where: ($depth <= 1)}  
  -has-> {as: nearTo, while: ($depth < 4), where: ($depth > 1), depthAlias: level,pathAlias: path} 
   -has-> NOT {as:nearToFinal}
  RETURN nearToFinal,level,path
)
group by nearToFinal order by repetition desc

В качестве альтернативы приведенный ниже запрос дает мне отрицательный результат, но не может упорядочить на основе повторения, поскольку псевдоним не поддерживается для предложения from.

      select * from (TRAVERSE out("has") FROM #27:1 MAXDEPTH 4 STRATEGY BREADTH_FIRST) where @rid NOT IN (TRAVERSE out("has") FROM #27:1 MAXDEPTH 1)

Буду признателен за любую оказанную помощь. Тот же случай с запросом гремлина тоже подойдет.

0 ответов

Другие вопросы по тегам