Neo4J / APOC - Невозможно построить запрос после вызова хранимой процедуры `apoc.cypher.doIt`

Я запускаю следующий запрос Cypher:

WITH "CREATE (test:Test {id: 1})" AS cypher
CALL apoc.cypher.doIt(cypher, {}) YIELD value
CREATE (test2:Test2 {id: 2})

После этого я бегу MATCH (a) RETURN a и увидеть, что только один узел, с Test ярлык создан. Второй CREATE заявление не похоже на запуск

Если я создам Test2 до CALL, он создает узел, как и ожидалось.

Может кто-нибудь объяснить, почему это происходит, и как можно продолжить с запросом после этого CALL статья?

Заранее спасибо!

1 ответ

Решение

Проблема здесь в том, что поскольку шифр выполняется в apoc.cypher.doIt() не возвращает никаких строк, YIELD ничего не дает. Вы можете подтвердить это, заменив свой CREATE в конце на RETURN value: Без изменений, без записей.

Здесь нет строк, над которыми нужно работать, и все операции выполняются для каждой строки, поэтому CREATE никогда не выполняется, нет строк для его выполнения.

Вам нужно будет вернуть что-то в вашем казненном шифре, return true или что-то.

Всегда следите за тем, сколько строк ваш запрос генерирует на разных этапах вашего запроса, поскольку ваши операции (сопоставление, создание и т. Д.) Будут выполняться столько раз, сколько строк.

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