Neo4J - предложение WHERE ALL нарушает соответствие на узлах - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь вернуть два набора узлов, а затем вернуть их как один набор.

У меня есть предложение WHERE ALL, которое разбивает запрос, и я не могу понять, почему.

Я также хотел бы знать, как объединить два набора узлов, поэтому добавьте childItems к parentItems в одном списке уровней. Я не верю, что я делаю это правильно с «+».

MATCH (ic: itemCollection)-[:CONTAINS]->(ii: itemInstance)
WITH COLLECT(ii) AS parentItem, ic, ii
OPTIONAL MATCH p = (ii)-[*]->(:item)-[:INSTANCE]->(childItem: ItemInstance)
// get asset children
SET ic.lastAccess = timestamp()
WITH parentItem, [n IN nodes(p) WHERE 'itemInstance' 
IN labels(n) AND NOT(n.id = ii.id) | n] AS childItems, p, ic
// RETURN parentItem, childItems - will return the parentItem node, and the childItem nodes here, but not after the WHERE ALL clause
WHERE ALL(n IN childItems WHERE (ic)-[:CONTAINS]-(n))
//merge parent with children
WITH parentItem , childItems, p
WITH parentItem + childItems AS itemList, p
UNWIND itemList AS item
RETURN item

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 16 января 2020

WHERE ALL прерывается, если p равно нулю. Чтобы обойти это, я использую coalesce(childAssets, []), чтобы преобразовать ноль в пустой список.

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