Статьи

Neo4j 1.8.M03 — Кофе по теме

Содержание этой статьи было первоначально написано Андреасом Коллегером в блоге Neo4j.

Выпущенный сегодня, Neo4j 1.8.M03 вводит RELATE положение, двухступенчатый танец MATCH или CREATE . Кроме того, новая поддержка транзакций в оболочке позволяет вызывать повторное выполнение действий в случае, если вы ошиблись.

RELATE, подзаголовок

Предложение RELATE во многом похоже на предложение MATCH — ASCII-искусство обхода графа — но ведет себя иначе, когда нет удовлетворяющего подграфа. Когда нет совпадений, RELATE создаст необходимые отношения и даже промежуточные узлы. RELATE гарантирует, что подграф существует.
Итак, я только что принесла себе кофе. Допустим, я хочу следить за тем, как часто я посещаю  3 Bees Coffee . Я мог вырезать надрезы на своем столе, но я уже испортил один стол Ikea. Будучи графически настроенным, я сразу понимаю, что мне будут любопытны более глубокие вопросы относительно всех мест, которые я посещаю. Я, конечно, буду развивать графическое мини-приложение.
Neo4j 1.8.M01представил предложение CREATE , поэтому я создам меня и кофейню:

CREATE me = {name:"Andreas"}, `3bees` = {name: "3 Bees Coffee"}

 (Обратите внимание, что спина отмечена как 3bees, потому что термин начинается с цифры).
Чтобы записать, что я посетил 3 Bees Coffee, я мог бы добавить отношения одновременно:

CREATE me = {name:"Andreas"}, `3bees` = {name: "3 Bees Coffee"}, me-[:VISITS]->`3bees`

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

START me=node(1), coffee=node(2) CREATE me-[:VISITS]-coffee

Проще простого. Ммм пирог. Создайте запись для меня, создайте запись для магазина, и всякий раз, когда я посещаю магазин, создаю Отношения. Поскольку я хочу отслеживать частоту своих посещений, у меня внезапно возникает проблема: я не хочу каждый раз создавать Отношения, а получаю их, если они существуют, и просто обновляю свойство для них.
Сайфер декларативен. Ложки нет, я имею в виду «ЕСЛИ». Итак, мы переходим к нашему дружескому предложению RELATE :

START me=node(1), coffee=node(2) RELATE me-[v:VISITS]-coffee return v

  Это будет соответствовать ВИЗИТАМ, если он существует, или создать его, если его нет. Чтобы обновить посещения, я могу преобразовать RETURN в WITH, чтобы добавить предложение SET следующим образом:

START me=node(1), coffee=node(2) RELATE me-[v:VISITS]-coffee WITH v SET v.visits=(v.visits +1) RETURN v

  Хорошо, еще одна деталь для корректировки: классическая проблема начальных условий. Если случится так, что RELATE создаст новое Отношение, у него еще не будет  Собственности посещений . Мы будем использовать COALESCE, чтобы игнорировать v.visits, если он пуст, а затем добавить 1:

START me=node(1), coffee=node(3) RELATE me-[v:VISITS]-coffee WITH v SET v.visits=(coalesce(v.visits?,0)+1) return v

 Ах, теперь у меня еще больше стимулов для перерывов на кофе. Предложение RELATE — это очень весело. Купите себе чашку кофе, затем сядьте, чтобы просмотреть раздел Руководства Neo4j на Cypher RELATE, чтобы узнать больше. И проверьте мой расход кофе в консоли Neo4j Live , где вы можете поиграть с RELATE .

Граф кофе

Транзакционная оболочка

До этого выпуска каждый запрос, выполняемый в оболочке Neo4j (из командной строки или в Webadmin), создавал транзакцию при необходимости. Теперь вы можете контролировать транзакции с помощью некоторых новых команд оболочки: начать транзакцию, зафиксировать и выполнить откат. Они позволяют вам практиковать ваши новые танцевальные движения Cypher, не беспокоясь о том, чтобы упасть на лицо и забрать свою базу данных с собой. Как обычно, обратитесь к руководству
Neo4j за подробностями.

Связать себя

Neo4j 1.8.M03 доступен для немедленной загрузки в обычных местах. Получи это сейчас:

  • Скачать с neo4j.org
  • Поднимите версии в вашем maven pom.xml
  • Положение о героку с:  дополнения героя: добавить neo4j —neo4j-версия 1.8.M03

Хотите попрактиковаться в Cypher с коллегами-графистами? Присоединяйтесь к нам на
встрече где-нибудь в мире или предложите новое место, и мы рассмотрим посещение вашего района, чтобы купить вам чашку кофе.

 

КОНЕЦ