Итак, я пытаюсь вернуть 2 набора из одного шифрованного запроса:
Если родительские узлы находятся в индексе, то
- потомки родительских узлов
- бездетные родительские узлы.
Мне удалось получить аналогичный запрос, который возвращает родителей, которые находятся в индексе в одном наборе, и их дочерние элементы в другом наборе, как показано ниже.
START Parents = node:app_fulltext('name:"City"'),
MATCH Parents-[?:ChildOf]-Apps
RETURN collect(Apps.Title), collect(Parents.Name);
==> +--------------------------------------------------------------+
==> | collect(Apps.Title) | collect(Parents.Name) |
==> +--------------------------------------------------------------+
==> | ["Empty City 3D"] | ["Empty City 3D","Empty City 3D Fake"] |
==> +--------------------------------------------------------------+
Это близко к тому, что я хочу. Однако я хочу отфильтровать из Parents.Name те элементы, у которых уже есть дочерние элементы в коллекции Apps.Title.
Это набор результатов, который я хотел бы получить. "Empty City 3D Fake" не имеет дочерних элементов, поэтому он возвращается в Parents.Name.
==> +--------------------------------------------------------------+
==> | collect(Apps.Title) | collect(Parents.Name) |
==> +--------------------------------------------------------------+
==> | ["Empty City 3D"] | ["Empty City 3D Fake"] |
Когда я только что добавил предложение Where r is null, оно ничего не вернуло, поэтому для этого мне пришлось добавить два идентичных начальных родительских набора (Parents и Parents2). Тем не менее, это выглядит очень неуклюжим, поэтому я надеялся, что есть лучший способ.
START Parents = node:app_fulltext('name:"City"'),
Parents2 = node:app_fulltext('name:"City"')
MATCH Parents-[r?:ChildOf]-Children, Parents2-[:ChildOf]-Apps
Where r is null
return collect(Apps.Title), collect(Parents.Name);
==> +--------------------------------------------------------------+
==> | collect(Apps.Title) | collect(Parents.Name) |
==> +--------------------------------------------------------------+
==> | ["Empty City 3D"] | ["Empty City 3D Fake"] |
==> +--------------------------------------------------------------+