Neo4j: Ожидается ровно одно утверждение на запрос, но получено: 3

Я делаю практическое упражнение Neo4j, следуя видео UCSD. Я вырезаю и вставляю сценарий, предусмотренный для упражнений. Я только что столкнулся с проблемой с предоставленным сценарием для графа, не содержащего непосредственной окрестности указанного узла:

match (d {Name:'D'})-[:TO]-(b)
with collect(distinct b.Name) as neighbors
match (n)-[r:TO]->(m)
where
not (n.Name in (neighbors+'D'))
and
not (m.Name in (neighbors+'D'))
return n, r, m;

match (d {Name:'D'})-[:TO]-(b)-[:TO]->(leaf)
where not((leaf)-->())
return (leaf);

match (d {Name:'D'})-[:TO]-(b)<-[:TO]-(root)
where not((root)<--())

return (root)

Это возвращает:

Ожидается ровно одно утверждение на запрос, но получено: 3

Когда я запускаю первые 8 строк, Neo4j возвращает график с ожидаемыми узлами и ребрами. Но когда я добавляю последующие запросы, сообщения об ошибках начинают появляться.

1 ответ

Если вы используете браузер Neo4j для запуска этих CYPHER, убедитесь, что редактор запросов с несколькими операторами включен. Вы можете включить его в настройках браузера, установив флажок. https://s3.amazonaws.com/dev.assets.neo4j.com/wp-content/uploads/enable_multiline_queries.jpg

Браузер Neo4j может одновременно выполнять только один запрос. Вы пытаетесь запустить 3:

Запрос 1:

match (d {Name:'D'})-[:TO]-(b)
with collect(distinct b.Name) as neighbors
match (n)-[r:TO]->(m)
where
not (n.Name in (neighbors+'D'))
and
not (m.Name in (neighbors+'D'))
return n, r, m;

Запрос 2

match (d {Name:'D'})-[:TO]-(b)-[:TO]->(leaf)
where not((leaf)-->())
return (leaf);

Запрос 3:

match (d {Name:'D'})-[:TO]-(b)<-[:TO]-(root)
where not((root)<--())

return (root)

Вы должны скопировать, вставить и запустить эти 3 запроса отдельно.

В Neo4j Browser Github Repo есть открытый вопрос о поддержке нескольких операторов Cypher одновременно в браузере, но это специально для операторов, которые не возвращают никаких данных.

Быстрое решение, которое сработало для меня (также упоминается на https://neo4j.com/graphacademy/online-training/) при игре с онлайн-песочницей:

Прежде чем ты начнешь

Включить редактор запросов с несколькими инструкциями

  1. Нажмите кнопку настроек браузера в левом нижнем углу браузера Neo4j.

  2. Убедитесь, что установлен флажок Включить редактор запросов с несколькими операторами:

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