neo4j javascript API: сортировать и собирать матчи - PullRequest
0 голосов
/ 20 февраля 2020

Я должен выполнить запрос, основанный на объединении запросов, и я должен применить COLLECT и SORT результатов (я на neo4j 3.5)

Итак, мой начальный псевдокод следующий:

var session = driver.session();
  return session
.run("QUERY_1 return value as COL1, value2 as COL2 UNION QUERY_2 return value as COL1, value2 as COL",{paramslit}) 
.then(result => {
      session.close();
      return result.records.map(record => { return new RESULT(...)}
});
    })
    .catch(error => {
      session.close();
      throw error;
    });

Моя проблема заключается в том, что мне нужно получить результат col2 в виде набора, поэтому мне нужно применить к нему коллекцию в запросе шифрования; но сбор следует применять после объединения, потому что и QUERY_1, и QUERY_2 могут возвращать значения для данного col1

QUERY_1 и QUERY_2 уже довольно сложны, и я не думаю, что есть способ получить выходные данные этих запросы с одним запросом без UNION

Только для шифровального кода. Я знаю, что существует apo c .cypher.run , но я не смог заставить его работать так, как ожидалось сеанс. запуск код

1 Ответ

1 голос
/ 22 февраля 2020

В neo4j 4.0 в Cypher была добавлена ​​новая функция подзапрос , которая поддерживает обработку после UNION .

. ты хочешь. Вот новый псевдокод Cypher:

CALL {
  QUERY_1 return value as COL1, value2 as COL2
  UNION
  QUERY_2 return value as COL1, value2 as COL2
}
RETURN COL1, COLLECT(COL2) as SET_OF_COL2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...