как выполнить несколько транзакций в одном запросе

1

Я использую API-интерфейс Neo4J REST для выполнения отдельных запросов:

  • request 1 - создать пользовательский узел (и получить идентификатор узла)
  • request 2 - добавить метку пользователя к созданному узлу
  • request 3 - создать узел изображения (и получить идентификатор узла)
  • request 4 - добавить метку изображения к созданному узлу
  • request 5 - создать связь между узлами с созданными идентификаторами

Есть ли способ выполнить все эти операции в одном запросе?

Теги:
neo4j

1 ответ

4
Лучший ответ

Вероятно, самым простым способом является создание единого запроса Cypher, который объединяет все в один запрос. Имейте в виду, что вам не нужен идентификатор узла, если вы просто работаете с ним во время запроса Cypher.

Вы можете использовать либо конечную точку Cypher, либо конечную точку транзакции HTTP. В этом случае, вероятно, проще всего использовать конечную точку Cypher (единственная разница здесь в том, что конечная точка Cypher автоматически пытается совершить транзакцию в конце запроса, тогда как конечная точка транзакции HTTP может охватывать несколько запросов, хотя она все еще может быть использована для одного запроса).

http://docs.neo4j.org/chunked/stable/rest-api-cypher.html содержит много информации о конечной точке Cypher, а http://docs.neo4j.org/chunked/stable/rest-api- transactional.html имеет информацию о конечной точке транзакции HTTP.

Версия TL: DR: /db/data/cypher, скорее всего, конечная точка, с которой вы хотите отправить запрос.

Сам запрос Cypher должен быть довольно простым; что-то вроде:

CREATE (u:User)-[:REL_TYPE]->(p:Picture)

... конечно, если вам нужно сделать несколько таких вставок, возможно, просмотр пакетной операции может быть плохой идеей, особенно если ваш запрос Cypher слишком длинный (посмотрите на конечную точку транзакции HTTP для получения дополнительной информации; прямой).

Надеюсь это поможет!

  • 0
    На самом деле POST /db/data/transaction/commit - это конечная точка, которую вы хотите использовать. CREATE (u:User {name:{name}})-[:REL_TYPE]->(p:Picture {url:{url}}) RETURN id(u), id(p) Также проверьте Справочную карту Cypher и команда MERGE . neo4j.org/resources/cypher
  • 0
    Согласно docs.neo4j.org/chunked/stable/rest-api-transactional.html говорится: «Ключевое различие между конечной точкой транзакционного HTTP и конечной точкой Cypher (см. Раздел 19.5,« Запросы Cypher через REST ») использовать одну и ту же транзакцию в нескольких HTTP-запросах. Конечная точка шифра всегда пытается зафиксировать транзакцию в конце каждого HTTP-запроса. " ... так что, если ОП хочет сделать один запрос Cypher, он не может просто пойти против / db / data / cypher, как сказано в ссылке выше?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню