UNWIND несколько связей и сбор узлов и отношений - с NULL - PullRequest
0 голосов
/ 21 октября 2019

Есть ли способ сделать следующее?

MATCH (main {Identifier: "Main"})
UNWIND
  [(main)-[:MULTI_JUMP_PATH1]->(n1)-[rel1:REL]->(end1) | n1] +
  [(main)-[:MULTI_JUMP_PATH2]->(n2)-[rel2:REL]->(end2) | n2] AS node
UNWIND
  [(main)-[:MULTI_JUMP_PATH1]->(n1)-[rel1:REL]->(end1) | end1] +
  [(main)-[:MULTI_JUMP_PATH2]->(n2)-[rel2:REL]->(end2) | end2] AS end
UNWIND
  [(main)-[:MULTI_JUMP_PATH1]->(n1)-[rel1:REL]->(end1) | rel1] +
  [(main)-[:MULTI_JUMP_PATH2]->(n2)-[rel2:REL]->(end2) | rel2] AS rel
RETURN DISTINCT main, node, end, rel

По сути, я ищу более прямой способ начать с основного и получить эквивалент:

(node=n1+n2)-[rel=rel1+rel2:REL]->(end=end1+end2)

безпотерять главное. В конечном итоге я хочу запустить результаты:

FOREACH (o IN CASE WHEN end IS NULL THEN [rel] ELSE [] END | SET main.property=rel.property*n.property)

Сейчас я выполняю несколько запросов подряд и проверяю результаты между всеми запросами, но, похоже, будет более эффективный способ сделать это. все в цифре.

Кроме того, я не могу заставить UNWIND прекратить терять идентификаторы, когда список понимания равен нулю.

Например:

CASE 
WHEN  [(main)-[:MULTI_JUMP_PATH1]->(n1)-[rel1:REL]->(end1) | n1] +
  [(main)-[:MULTI_JUMP_PATH2]->(n2)-[rel2:REL]->(end2) | n2] = []
THEN []
ELSE 
 [(main)-[:MULTI_JUMP_PATH1]->(n1)-[rel1:REL]->(end1) | n1] +
  [(main)-[:MULTI_JUMP_PATH2]->(n2)-[rel2:REL]->(end2) | n2]
END AS n

неизменно выдает ошибку "Neo.DatabaseError.Statement.ExecutionFailed: выражения должны быть зарегистрированы в его собственном Pipe, поэтому профилирование знает, куда сообщать о db-попаданиях». Я также пытался с = null / null и = [null] / [null] одна и та же ошибка каждый раз. Я не получаю ту же ошибку, если выполняю необязательное сопоставление со сборками, но я заметил, что необязательные сопоставления с длинными путями делают странные вещи, даже если они всегда начинаются со связанного узла (иногда я получаю ошибки, связанные с отсутствующими узлами, которые я чувствуюЯ не должен получать, поскольку это необязательные совпадения - но это другой пост).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...