Neo4j — Обзор
Neo4j является ведущей в мире графической базой данных с открытым исходным кодом, которая разработана с использованием технологии Java. Он легко масштабируется и не содержит схем (NoSQL).
Что такое база данных графиков?
Граф представляет собой графическое представление набора объектов, где некоторые пары объектов связаны ссылками. Он состоит из двух элементов — узлов (вершин) и отношений (ребер).
База данных графиков — это база данных, используемая для моделирования данных в форме графиков. Здесь узлы графа изображают сущности, в то время как отношения изображают ассоциацию этих узлов.
Популярные базы данных графиков
Neo4j — это популярная графическая база данных. Другими базами данных Graph являются Oracle NoSQL Database, OrientDB, HypherGraphDB, GraphBase, InfiniteGraph и AllegroGraph.
Почему граф базы данных?
В настоящее время большая часть данных существует в форме отношений между различными объектами, и чаще всего отношения между данными являются более ценными, чем сами данные.
Реляционные базы данных хранят высокоструктурированные данные, в которых есть несколько записей, в которых хранятся данные одного и того же типа, поэтому они могут использоваться для хранения структурированных данных и не хранят связи между данными.
В отличие от других баз данных, графовые базы данных хранят отношения и соединения как первоклассные объекты.
Модель данных для графовых баз данных проще по сравнению с другими базами данных, и их можно использовать с системами OLTP. Они предоставляют такие функции, как целостность транзакций и эксплуатационная доступность.
СУБД против графической базы данных
Ниже приведена таблица, в которой сравниваются реляционные базы данных и базы данных Graph.
Sr.No | RDBMS | База данных графиков |
---|---|---|
1 | таблицы | диаграммы |
2 | Ряды | Вершины |
3 | Столбцы и данные | Свойства и его значения |
4 | Ограничения | Отношения |
5 | присоединяется | пересечение |
Преимущества Neo4j
Ниже приведены преимущества Neo4j.
-
Гибкая модель данных — Neo4j предоставляет гибкую простую и вместе с тем мощную модель данных, которую можно легко изменять в зависимости от приложений и отраслей.
-
Анализ в реальном времени — Neo4j предоставляет результаты на основе данных в реальном времени.
-
Высокая доступность — Neo4j отлично доступен для крупных корпоративных приложений реального времени с транзакционными гарантиями.
-
Связанные и полуструктурированные данные. Используя Neo4j, вы можете легко представлять связанные и полуструктурированные данные.
-
Простой поиск — Используя Neo4j, вы можете не только представлять, но и легко извлекать (перемещаться / перемещаться) связанные данные быстрее по сравнению с другими базами данных.
-
Язык запросов Cypher — Neo4j предоставляет декларативный язык запросов для визуального представления графика с использованием синтаксиса ascii-art. Команды этого языка в удобочитаемом формате и очень просты в освоении.
-
Нет объединений — используя Neo4j, он НЕ требует сложных объединений для извлечения связанных / связанных данных, так как очень легко получить сведения о соседнем узле или взаимосвязи без объединений или индексов.
Гибкая модель данных — Neo4j предоставляет гибкую простую и вместе с тем мощную модель данных, которую можно легко изменять в зависимости от приложений и отраслей.
Анализ в реальном времени — Neo4j предоставляет результаты на основе данных в реальном времени.
Высокая доступность — Neo4j отлично доступен для крупных корпоративных приложений реального времени с транзакционными гарантиями.
Связанные и полуструктурированные данные. Используя Neo4j, вы можете легко представлять связанные и полуструктурированные данные.
Простой поиск — Используя Neo4j, вы можете не только представлять, но и легко извлекать (перемещаться / перемещаться) связанные данные быстрее по сравнению с другими базами данных.
Язык запросов Cypher — Neo4j предоставляет декларативный язык запросов для визуального представления графика с использованием синтаксиса ascii-art. Команды этого языка в удобочитаемом формате и очень просты в освоении.
Нет объединений — используя Neo4j, он НЕ требует сложных объединений для извлечения связанных / связанных данных, так как очень легко получить сведения о соседнем узле или взаимосвязи без объединений или индексов.
Особенности Neo4j
Ниже приведены заметные особенности Neo4j —
-
Модель данных (гибкая схема) — Neo4j следует модели данных, называемой моделью графа собственных свойств. Здесь граф содержит узлы (сущности), и эти узлы связаны друг с другом (изображены отношениями). Узлы и отношения хранят данные в парах ключ-значение, известных как свойства.
В Neo4j нет необходимости следовать фиксированной схеме. Вы можете добавить или удалить свойства согласно требованию. Это также обеспечивает ограничения схемы.
-
Свойства ACID — Neo4j поддерживает полные правила ACID (атомарность, согласованность, изоляция и долговечность).
-
Масштабируемость и надежность. Вы можете масштабировать базу данных, увеличивая количество операций чтения / записи и объем, не влияя на скорость обработки запросов и целостность данных. Neo4j также обеспечивает поддержку репликации для обеспечения безопасности и надежности данных.
-
Cypher Query Language — Neo4j предоставляет мощный декларативный язык запросов, известный как Cypher. Он использует ASCII-арт для изображения графиков. Cypher прост в освоении и может быть использован для создания и извлечения отношений между данными без использования сложных запросов, таких как Joins.
-
Встроенное веб-приложение — Neo4j предоставляет встроенное веб-приложение Neo4j Browser . Используя это, вы можете создавать и запрашивать данные графика.
-
Драйверы — Neo4j может работать с —
-
REST API для работы с такими языками программирования, как Java, Spring, Scala и т. Д.
-
Java Script для работы с пользовательскими интерфейсами MVC, такими как Node JS.
-
Он поддерживает два вида Java API: Cypher API и Native Java API для разработки приложений Java. В дополнение к этому вы также можете работать с другими базами данных, такими как MongoDB, Cassandra и т. Д.
-
-
Индексирование — Neo4j поддерживает Индексы с помощью Apache Lucence.
Модель данных (гибкая схема) — Neo4j следует модели данных, называемой моделью графа собственных свойств. Здесь граф содержит узлы (сущности), и эти узлы связаны друг с другом (изображены отношениями). Узлы и отношения хранят данные в парах ключ-значение, известных как свойства.
В Neo4j нет необходимости следовать фиксированной схеме. Вы можете добавить или удалить свойства согласно требованию. Это также обеспечивает ограничения схемы.
Свойства ACID — Neo4j поддерживает полные правила ACID (атомарность, согласованность, изоляция и долговечность).
Масштабируемость и надежность. Вы можете масштабировать базу данных, увеличивая количество операций чтения / записи и объем, не влияя на скорость обработки запросов и целостность данных. Neo4j также обеспечивает поддержку репликации для обеспечения безопасности и надежности данных.
Cypher Query Language — Neo4j предоставляет мощный декларативный язык запросов, известный как Cypher. Он использует ASCII-арт для изображения графиков. Cypher прост в освоении и может быть использован для создания и извлечения отношений между данными без использования сложных запросов, таких как Joins.
Встроенное веб-приложение — Neo4j предоставляет встроенное веб-приложение Neo4j Browser . Используя это, вы можете создавать и запрашивать данные графика.
Драйверы — Neo4j может работать с —
REST API для работы с такими языками программирования, как Java, Spring, Scala и т. Д.
Java Script для работы с пользовательскими интерфейсами MVC, такими как Node JS.
Он поддерживает два вида Java API: Cypher API и Native Java API для разработки приложений Java. В дополнение к этому вы также можете работать с другими базами данных, такими как MongoDB, Cassandra и т. Д.
Индексирование — Neo4j поддерживает Индексы с помощью Apache Lucence.
Neo4j — модель данных
Модель данных Neo4j Property Graph
Neo4j Graph Database использует модель графа свойств для хранения и управления своими данными.
Ниже приведены ключевые особенности модели графа свойств —
-
Модель представляет данные в узлах, отношениях и свойствах
-
Свойства являются парами ключ-значение
-
Узлы представлены с помощью круга, а отношения представлены с помощью клавиш со стрелками
-
Отношения имеют направления: однонаправленные и двунаправленные
-
Каждое отношение содержит «Начальный узел» или «От узла» и «До узла» или «Конечный узел»
-
И Узлы и Отношения содержат свойства
-
Отношения связывает узлы
Модель представляет данные в узлах, отношениях и свойствах
Свойства являются парами ключ-значение
Узлы представлены с помощью круга, а отношения представлены с помощью клавиш со стрелками
Отношения имеют направления: однонаправленные и двунаправленные
Каждое отношение содержит «Начальный узел» или «От узла» и «До узла» или «Конечный узел»
И Узлы и Отношения содержат свойства
Отношения связывает узлы
В модели данных графа свойств отношения должны быть направленными. Если мы попытаемся создать отношения без направления, то будет выдано сообщение об ошибке.
В Neo4j отношения также должны быть направленными. Если мы попытаемся создать отношения без направления, Neo4j выдаст сообщение об ошибке, в котором говорится, что «отношения должны быть направленными».
Neo4j Graph Database хранит все свои данные в узлах и отношениях. Нам не нужна ни дополнительная база данных RRBMS, ни база данных SQL для хранения данных базы данных Neo4j. Он хранит свои данные в виде графиков в своем родном формате.
Neo4j использует Native GPE (Graph Processing Engine) для работы с форматом хранения Native Graph.
Основными строительными блоками модели данных Graph DB являются —
- Вершины
- Отношения
- свойства
Ниже приведен простой пример графа свойств.
Здесь мы представили узлы, используя круги. Отношения представлены стрелками. Отношения являются направленными. Мы можем представить данные узла в терминах свойств (пары ключ-значение). В этом примере мы представили свойство Id каждого узла в круге узла.
Neo4j — настройка среды
В этой главе мы обсудим, как установить Neo4j в вашу систему, используя exe-файл.
Настройка сервера базы данных Neo4j с помощью exe-файла Windows
Следуйте инструкциям ниже, чтобы загрузить Neo4j в вашу систему.
Шаг 1 — Посетите официальный сайт Neo4j, используя https://neo4j.com/ . При нажатии на эту ссылку вы попадете на домашнюю страницу сайта neo4j.
Шаг 2 — Как показано на скриншоте выше, на этой странице справа вверху есть кнопка «Загрузить». Нажмите на это.
Шаг 3 — Это перенаправит вас на страницу загрузок, где вы можете скачать версию для сообщества и корпоративную версию Neo4j. Загрузите версию программного обеспечения для сообщества, нажав соответствующую кнопку.
Шаг 4 — Вы перейдете на страницу, где вы можете скачать версию программного обеспечения Neo4j для сообщества, совместимую с различными операционными системами. Загрузите файл, соответствующий желаемой операционной системе.
Это позволит загрузить файл с именем neo4j-community_windows-x64_3_1_1.exe в вашу систему, как показано на следующем снимке экрана.
Шаг 5 — Дважды щелкните exe-файл, чтобы установить Neo4j Server.
Шаг 6 — Примите лицензионное соглашение и продолжите установку. После завершения процесса вы можете заметить, что Neo4j установлен в вашей системе.
Запуск сервера
Шаг 1 — Щелкните меню запуска Windows и запустите сервер Neo4j, щелкнув ярлык меню «Пуск» для Neo4j.
Шаг 2 — Нажав на ярлык, вы получите окно для Neo4j Community Edition. По умолчанию он выбирает c: \ Users \ [имя пользователя] \ Documents \ Neo4j \ default.graphdb. Если вы хотите, вы можете изменить свой путь к другому каталогу.
Шаг 3 — Нажмите кнопку «Пуск», чтобы запустить сервер Neo4j.
После запуска сервера вы можете заметить, что каталог базы данных заполнен, как показано на следующем снимке экрана.
Работа с Neo4j
Как обсуждалось в предыдущих главах, neo4j предоставляет встроенное приложение для работы с Neo4j. Вы можете получить доступ к Neo4j, используя URL-адрес http: // localhost: 7474 /
Neo4j — Строительные блоки
Neo4j Graph Database имеет следующие строительные блоки —
- Вершины
- свойства
- Отношения
- Этикетки
- Браузер данных
Узел
Узел является фундаментальной единицей Графа. Он содержит свойства с парами ключ-значение, как показано на следующем рисунке.
Здесь Node Name = «Employee», и он содержит набор свойств в виде пар ключ-значение.
свойства
Свойство — это пара ключ-значение для описания узлов и отношений графа.
Key = Value
Где Key — это String, а Value может быть представлено с использованием любых типов данных Neo4j.
Отношения
Отношения являются еще одним важным строительным блоком графической базы данных. Он соединяет два узла, как показано на следующем рисунке.
Здесь Emp и Dept — два разных узла. «WORKS_FOR» — это отношение между узлами Emp и Dept.
Как это означает, стрелка от Emp до Dept, это отношение описывает —
Emp WORKS_FOR Dept
Каждое отношение содержит один начальный узел и один конечный узел.
Здесь «Emp» является начальным узлом, а «Dept» является конечным узлом.
Поскольку эта метка стрелки отношения представляет отношение между узлом «Emp» и узлом «Dept», это отношение известно как «Входящие отношения» к узлу «Dept» и «Исходящие отношения» к узлу «Emp».
Как и узлы, отношения также могут содержать свойства в виде пар ключ-значение.
Здесь отношение «WORKS_FOR» имеет одно свойство как пара ключ-значение.
Id = 123
Он представляет собой идентификатор этих отношений.
Этикетки
Метка связывает общее имя с набором узлов или отношений. Узел или отношение могут содержать одну или несколько меток. Мы можем создавать новые метки для существующих узлов или отношений. Мы можем удалить существующие метки из существующих узлов или связей.
Из предыдущей диаграммы мы можем наблюдать, что есть два узла.
Левый боковой узел имеет метку: «Emp», а правый боковой узел имеет метку: «Dept».
Связь между этими двумя узлами также имеет метку: «WORKS_FOR».
Примечание. Neo4j хранит данные в свойствах узлов или отношений.
Neo4j Data Browser
После установки Neo4j мы можем получить доступ к Neo4j Data Browser, используя следующий URL
http://localhost:7474/browser/
Neo4j Data Browser используется для выполнения команд CQL и просмотра выходных данных.
Здесь нам нужно выполнить все команды CQL по подсказке доллара: «$»
Введите команды после символа доллара и нажмите кнопку «Выполнить» для запуска команд.
Он взаимодействует с сервером базы данных Neo4j, извлекает и отображает результаты прямо под подсказкой доллара.
Используйте кнопку «VI View» для просмотра результатов в формате диаграмм. Приведенная выше диаграмма показывает результаты в формате «UI View».
Используйте кнопку «Вид сетки», чтобы просмотреть результаты в режиме сетки. Следующая диаграмма показывает те же результаты в формате «Grid View».
Когда мы используем «Вид сетки» для просмотра результатов нашего запроса, мы можем экспортировать их в файл в двух разных форматах.
CSV
Нажмите кнопку «Экспорт CSV», чтобы экспортировать результаты в формате файла CSV.
JSON
Нажмите кнопку «Экспорт JSON», чтобы экспортировать результаты в формате файла JSON.
Однако, если мы используем «UI View» для просмотра результатов нашего запроса, мы можем экспортировать их в файл только в одном формате: JSON
Neo4j CQL — Введение
CQL означает Cypher Query Language. Подобно тому, как Oracle Database имеет язык запросов SQL, Neo4j имеет CQL в качестве языка запросов.
Neo4j CQL
- Является ли язык запросов для Neo4j Graph Database.
- Это декларативный язык сопоставления с образцом.
- Следует SQL как синтаксис.
- Синтаксис очень прост и понятен человеку.
Как Oracle SQL
-
Neo4j CQL имеет команды для выполнения операций с базой данных.
-
Neo4j CQL поддерживает множество предложений, таких как WHERE, ORDER BY и т. Д., Для простого написания очень сложных запросов.
-
Neo4j CQL поддерживает некоторые функции, такие как String, Aggregation. В дополнение к ним, он также поддерживает некоторые функции отношений.
Neo4j CQL имеет команды для выполнения операций с базой данных.
Neo4j CQL поддерживает множество предложений, таких как WHERE, ORDER BY и т. Д., Для простого написания очень сложных запросов.
Neo4j CQL поддерживает некоторые функции, такие как String, Aggregation. В дополнение к ним, он также поддерживает некоторые функции отношений.
Neo4j CQL Статьи
Ниже приводятся пункты чтения Neo4j.
Sr.No | Читать статьи | использование |
---|---|---|
1 | МАТЧ | Это предложение используется для поиска данных с указанным шаблоном. |
2 | ДОПОЛНИТЕЛЬНЫЙ МАТЧ | Это то же самое, что и совпадение, единственное отличие состоит в том, что он может использовать нули в случае отсутствия частей шаблона. |
3 | ГДЕ | Этот идентификатор предложения используется для добавления содержимого в запросы CQL. |
4 | НАЧНИТЕ | Этот пункт используется для поиска отправных точек по устаревшим индексам. |
5 | LOAD CSV | Этот пункт используется для импорта данных из файлов CSV. |
Ниже приводятся пункты записи Neo4j C ypher Query L anguage —
Sr.No | Написать статью | использование |
---|---|---|
1 | СОЗДАЙТЕ | Это предложение используется для создания узлов, отношений и свойств. |
2 | MERGE | Этот пункт проверяет, существует ли указанный шаблон в графе. Если нет, то это создает шаблон. |
3 | ЗАДАВАТЬ | Этот пункт используется для обновления меток на узлах, свойств на узлах и отношений. |
4 | УДАЛЯТЬ | Этот пункт используется для удаления узлов и отношений или путей и т. Д. Из графа. |
5 | УДАЛИТЬ | Это предложение используется для удаления свойств и элементов из узлов и отношений. |
6 | ДЛЯ КАЖДОГО | Этот класс используется для обновления данных в списке. |
7 | СОЗДАТЬ УНИКАЛЬНЫЙ | Используя предложения CREATE и MATCH, вы можете получить уникальный шаблон, сопоставив существующий шаблон и создав недостающий. |
8 | Импорт файлов CSV с помощью Cypher | С помощью Load CSV вы можете импортировать данные из файлов .csv. |
Ниже приведены общие положения Neo4j C ypher Query L anguage —
Sr.No | Общие положения | использование |
---|---|---|
1 | ВЕРНУТЬ | Это предложение используется для определения того, что включить в набор результатов запроса. |
2 | СОРТИРОВАТЬ ПО | Это предложение используется для упорядочения вывода запроса по порядку. Он используется вместе с пунктами RETURN или WITH . |
3 | ПРЕДЕЛ | Это предложение используется для ограничения строк в результате определенным значением. |
4 | ПРОПУСКАТЬ | Это предложение используется для определения, с какой строки начинать, включая строки в выводе. |
5 | С | Это предложение используется для объединения частей запроса. |
6 | РАЗМОТАТЬ | Это предложение используется для расширения списка в последовательность строк. |
7 | UNION | Этот пункт используется для объединения результатов нескольких запросов. |
8 | ВЫЗОВ | Этот пункт используется для вызова процедуры, развернутой в базе данных. |
Neo4j CQL Функции
Ниже приведены часто используемые функции Neo4j CQL —
Sr.No | Функции CQL | использование |
---|---|---|
1 | строка | Они используются для работы со строковыми литералами. |
2 | агрегирование | Они используются для выполнения некоторых операций агрегирования результатов CQL Query. |
3 | отношения | Они используются для получения деталей отношений, таких как начальный узел, конечный узел и т. Д. |
Мы подробно обсудим все команды, предложения и предложения Neo4j CQL, их использование и примеры в следующих главах.
Neo4j CQL Типы данных
Эти типы данных похожи на язык Java. Они используются для определения свойств узла или отношения.
Neo4j CQL поддерживает следующие типы данных —
Sr.No | Тип данных CQL | использование |
---|---|---|
1 | логический | Используется для представления логических литералов: true, false. |
2 | байт | Он используется для представления 8-битных целых чисел. |
3 | короткая | Он используется для представления 16-битных целых чисел. |
4 | ИНТ | Он используется для представления 32-битных целых чисел. |
5 | долго | Он используется для представления 64-битных целых чисел. |
6 | поплавок | Он используется для представления 32-битных чисел с плавающей точкой. |
7 | двойной | Он используется для представления 64-битных чисел с плавающей точкой. |
8 | голец | Используется для представления 16-битных символов. |
9 | строка | Он используется для представления строк. |
Операторы CQL
Ниже приведен список операторов, поддерживаемых языком Neo4j Cypher Query.
Sr.No | Тип | операторы |
---|---|---|
1 | математическая | +, -, *, /,%, ^ |
2 | сравнение | +, <>, <,>, <=,> = |
3 | логический | И, ИЛИ, XOR, НЕ |
4 | строка | + |
5 | Список | +, IN, [X], [X… ..Y] |
6 | Регулярное выражение | знак равно |
7 | Соответствие строки | НАЧИНАЕТСЯ, ЗАКОНЧИВАЕТСЯ, ОГРАНИЧАЕТ |
Булевы операторы в Neo4j CQL
Neo4j поддерживает следующие логические операторы для использования в предложении Neo4j CQL WHERE для поддержки нескольких условий.
Sr.No | Булевы операторы | Описание |
---|---|---|
1 | А ТАКЖЕ | Это ключевое слово Neo4j CQL для поддержки операции AND. Это как оператор SQL AND. |
2 | ИЛИ ЖЕ | Это ключевое слово Neo4j CQL для поддержки операции OR. Это как оператор SQL AND. |
3 | НЕ | Это ключевое слово Neo4j CQL для поддержки операции НЕ. Это как оператор SQL AND. |
4 | XOR | Это ключевое слово Neo4j CQL для поддержки операции XOR. Это как оператор SQL AND. |
Операторы сравнения в Neo4j CQL
Neo4j поддерживает следующие операторы сравнения для использования в предложении Neo4j CQL WHERE для поддержки условий.
Sr.No | Булевы операторы | Описание |
---|---|---|
1 | знак равно | Это оператор Neo4j CQL «Equal To». |
2 | <> | Это оператор Neo4j CQL «Не равно». |
3 | < | Это оператор Neo4j CQL «Less Than». |
4 | > | Это оператор Neo4j CQL «Greater Than». |
5 | <= | Это оператор Neo4j CQL «Меньше или равно». |
6 | > = | Это оператор Neo4j CQL «Больше или равно». |
Neo4j CQL — Создание узлов
Как уже говорилось, узел — это данные / запись в графовой базе данных. Вы можете создать узел в Neo4j, используя предложение CREATE . Эта глава учит вас, как —
- Создать один узел
- Создать несколько узлов
- Создать узел с меткой
- Создать узел с несколькими метками
- Создать узел со свойствами
- Возврат созданного узла
Создание одного узла
Вы можете создать узел в Neo4j, просто указав имя узла, который должен быть создан, вместе с предложением CREATE.
Синтаксис
Ниже приведен синтаксис для создания узла с использованием языка запросов Cypher.
CREATE (node_name);
Примечание. Точка с запятой (;) является необязательной.
пример
Ниже приведен пример Cypher Query, который создает узел в Neo4j.
CREATE (sample)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j, как показано на следующем снимке экрана.
Шаг 2 — Откройте браузер, скопируйте и вставьте следующий URL в адресную строку http: // localhost: 7474 /. Это даст вам встроенное браузерное приложение Neo4j с подсказкой в долларах, как показано на следующем снимке экрана.
Шаг 3 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание типа узла, выполните следующий запрос в подсказке доллара.
MATCH (n) RETURN n
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Создание нескольких узлов
Предложение create в Neo4j CQL также используется для создания нескольких узлов одновременно. Для этого необходимо передать имена создаваемых узлов через запятую.
Синтаксис
Ниже приведен синтаксис для создания нескольких узлов с помощью предложения CREATE.
CREATE (node1),(node2)
пример
Ниже приведен пример Cypher Query, который создает несколько узлов в Neo4j.
CREATE (sample1),(sample2)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание узла, введите и выполните следующий запрос в подсказке доллара.
MATCH (n) RETURN n
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Создание узла с меткой
Метка в Neo4j используется для группировки (классификации) узлов с помощью меток. Вы можете создать метку для узла в Neo4j, используя предложение CREATE.
Синтаксис
Ниже приведен синтаксис для создания узла с меткой с использованием языка запросов Cypher.
CREATE (node:label)
пример
Ниже приведен пример Cypher Query, который создает узел с меткой.
CREATE (Dhawan:player)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание узла, введите и выполните следующий запрос в подсказке доллара.
MATCH (n) RETURN n
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Создание узла с несколькими метками
Вы также можете создать несколько меток для одного узла. Вам необходимо указать метки для узла, разделив их двоеточием «:».
Синтаксис
Ниже приведен синтаксис для создания узла с несколькими метками.
CREATE (node:label1:label2:. . . . labeln)
пример
Ниже приведен пример Cypher Query, который создает узел с несколькими метками в Neo4j.
CREATE (Dhawan:person:player)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание узла, введите и выполните следующий запрос в подсказке доллара.
MATCH (n) RETURN n
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Создать узел со свойствами
Свойства — это пары ключ-значение, с помощью которых узел хранит данные. Вы можете создать узел со свойствами, используя предложение CREATE. Вам необходимо указать эти свойства через запятую в цветочных скобках «{}».
Синтаксис
Ниже приведен синтаксис для создания узла со свойствами.
CREATE (node:label { key1: value, key2: value, . . . . . . . . . })
пример
Ниже приведен пример Cypher Query, который создает узел со свойствами.
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"})
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание узла, введите и выполните следующий запрос в подсказке доллара.
MATCH (n) RETURN n
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Возврат созданного узла
В этой главе мы использовали запрос MATCH (n) RETURN n для просмотра созданных узлов. Этот запрос возвращает все существующие узлы в базе данных.
Вместо этого мы можем использовать предложение RETURN с CREATE для просмотра вновь созданного узла.
Синтаксис
Ниже приведен синтаксис для возврата узла в Neo4j.
CREATE (Node:Label{properties. . . . }) RETURN Node
пример
Ниже приведен пример Cypher Query, который создает узел со свойствами и возвращает его.
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"}) RETURN Dhawan
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j CQL — Создание отношений
В Noe4j отношение — это элемент, с помощью которого мы соединяем два узла графа. Эти отношения имеют направление, тип и шаблоны данных. Эта глава учит вас, как —
- Создать отношения
- Создать связь между существующими узлами
- Создать отношения с меткой и свойствами
Создание отношений
Мы можем создать отношения, используя предложение CREATE. Мы зададим отношение в квадратных скобках «[]» в зависимости от направления отношения, которое оно помещает между дефисом «-» и стрелкой «→», как показано в следующем синтаксисе.
Синтаксис
Ниже приведен синтаксис для создания отношений с использованием предложения CREATE.
CREATE (node1)-[:RelationshipType]->(node2)
пример
Прежде всего, создайте два узла Ind и Dhawan в базе данных, как показано ниже.
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"}) CREATE (Ind:Country {name: "India"})
Теперь создайте связь с именем BATSMAN_OF между этими двумя узлами как —
CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)
Наконец, верните оба узла, чтобы увидеть созданные отношения.
RETURN Dhawan, Ind
Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Создание связи между существующими узлами
Вы также можете создать связь между существующими узлами, используя предложение MATCH .
Синтаксис
Ниже приведен синтаксис для создания отношений с использованием предложения MATCH.
MATCH (a:LabeofNode1), (b:LabeofNode2) WHERE a.name = "nameofnode1" AND b.name = " nameofnode2" CREATE (a)-[: Relation]->(b) RETURN a,b
пример
Ниже приведен пример Cypher Query, который создает отношение с помощью предложения match.
MATCH (a:player), (b:Country) WHERE a.name = "Shikar Dhawan" AND b.name = "India" CREATE (a)-[r: BATSMAN_OF]->(b) RETURN a,b
Чтобы выполнить вышеуказанный запрос, выполните следующие шаги.
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Создание отношений с меткой и свойствами
Вы можете создать связь с меткой и свойствами, используя предложение CREATE.
Синтаксис
Ниже приведен синтаксис для создания связи с меткой и свойствами с помощью предложения CREATE.
CREATE (node1)-[label:Rel_Type {key1:value1, key2:value2, . . . n}]-> (node2)
пример
Ниже приведен пример Cypher Query, который создает связь с меткой и свойствами.
MATCH (a:player), (b:Country) WHERE a.name = "Shikar Dhawan" AND b.name = "India" CREATE (a)-[r:BATSMAN_OF {Matches:5, Avg:90.75}]->(b) RETURN a,b
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Создание полного пути
В Neo4j путь формируется с использованием непрерывных отношений. Путь может быть создан с помощью предложения create.
Синтаксис
Ниже приведен синтаксис для создания пути в Neo4j с использованием предложения CREATE.
CREATE p = (Node1 {properties})-[:Relationship_Type]-> (Node2 {properties})[:Relationship_Type]->(Node3 {properties}) RETURN p
пример
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — объединить команду
Команда MERGE является комбинацией команды CREATE и команды MATCH.
Команда Neo4j CQL MERGE ищет заданный шаблон в графе. Если он существует, он возвращает результаты.
Если он НЕ существует в графе, то он создает новый узел / отношение и возвращает результаты.
В этой главе вы узнаете, как:
- Объединить узел с меткой
- Объединить узел со свойствами
- OnCreate и OnMatch
- Объединить отношения
Синтаксис
Ниже приведен синтаксис команды MERGE.
MERGE (node: label {properties . . . . . . . })
Прежде чем перейти к примерам в этом разделе, создайте два узла в базе данных с метками Dhawan и Ind. Создайте отношение типа «BATSMAN_OF» от Dhawan до Ind, как показано ниже.
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"}) CREATE (Ind:Country {name: "India"}) CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)
Слияние узла с меткой
Вы можете объединить узел в базе данных на основе метки, используя предложение MERGE. Если вы попытаетесь объединить узел на основе метки, то Neo4j проверяет, существует ли какой-либо узел с данной меткой. Если нет, текущий узел будет создан.
Синтаксис
Ниже приведен синтаксис для объединения узла на основе метки.
MERGE (node:label) RETURN node
Пример 1
Ниже приведен пример Cypher Query, который объединяет узел в Neo4j (на основе метки). Когда вы выполняете этот запрос, Neo4j проверяет, есть ли какой-либо узел с проигрывателем меток. Если нет, он создает узел с именем «Jadeja» и возвращает его.
Если существует какой-либо узел с данной меткой, Neo4j возвращает их все.
MERGE (Jadeja:player) RETURN Jadeja
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Поскольку вы уже создали узел с именем «Dhawan» с меткой «player» в базе данных, Neo4j возвращает его, как показано на следующем снимке экрана.
Пример 2
Теперь попробуйте объединить узел с именем «CT2013» с меткой «Tournament». Поскольку нет узлов с этой меткой, Neo4j создает узел с заданным именем и возвращает его.
MERGE (CT2013:Tournament{name: "ICC Champions Trophy 2013"}) RETURN CT2013, labels(CT2013)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Как уже говорилось, поскольку нет узла с данным ярлыком (Турнир). Neo4j создает и возвращает указанный узел, как показано на следующем снимке экрана.
Слияние узла со свойствами
Вы также можете объединить узел с набором свойств. Если вы это сделаете, Neo4j выполнит поиск равного соответствия для указанного узла, включая свойства. Если он не находит, он создает.
Синтаксис
Ниже приведен синтаксис для объединения узла с использованием свойств.
MERGE (node:label {key1:value, key2:value, key3:value . . . . . . . . })
пример
Ниже приведен пример Cypher Query для объединения узла с использованием свойств. Этот запрос пытается объединить узел с именем «jadeja», используя свойства и метку. Поскольку нет такого узла с точной меткой и свойствами, Neo4j создает его.
MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) RETURN Jadeja
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Как уже говорилось, поскольку нет узлов с указанными меткой и свойствами, он создает один, как показано на следующем снимке экрана.
OnCreate и OnMatch
Всякий раз, когда мы выполняем запрос на слияние, узел либо совпадает, либо создается. Используя on create и on match, вы можете установить свойства для указания того, создан ли узел или соответствует.
Синтаксис
Ниже приводится синтаксис предложений OnCreate и OnMatch .
MERGE (node:label {properties . . . . . . . . . . .}) ON CREATE SET property.isCreated ="true" ON MATCH SET property.isFound ="true"
пример
Ниже приведен пример Cypher Query, который демонстрирует использование предложений OnCreate и OnMatch в Neo4j. Если указанный узел уже существует в базе данных, то узел будет сопоставлен, и в узле будет создано свойство с парой ключ-значение isFound = «true».
Если указанный узел не существует в базе данных, то узел будет создан, и в нем будет создано свойство с парой ключ-значение isCreated = «true».
MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) ON CREATE SET Jadeja.isCreated = "true" ON MATCH SET Jadeja.isFound = "true" RETURN Jadeja
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Как уже говорилось, поскольку нет узла с указанными деталями, Neo4j создал его вместе со свойством isFound, как показано на следующем снимке экрана.
Объединить отношения
Как и узлы, вы также можете объединить отношения, используя предложение MERGE.
пример
Ниже приведен пример Cypher Query, который объединяет отношения с помощью предложения MATCH в Neo4j. Этот запрос пытается объединить отношение с именем WINNERS_OF между узлами «ind» (метка: страна и название: Индия) и ICC13 (метка: турнир и имя: ICC Champions Trophy 2013).
Поскольку такого отношения не существует, Neo4j создает его.
MATCH (a:Country), (b:Tournament) WHERE a.name = "India" AND b.name = "ICC Champions Trophy 2013" MERGE (a)-[r:WINNERS_OF]->(b) RETURN a, b
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Поскольку указанное отношение не существует в базе данных, Neo4j создает его, как показано на следующем снимке экрана.
Таким же образом, вы можете объединить несколько отношений и ненаправленных отношений тоже.
Neo4j — Установить пункт
Используя предложение Set, вы можете добавлять новые свойства в существующий узел или отношение, а также добавлять или обновлять существующие значения свойств.
В этой главе мы собираемся обсудить, как
- Установить свойство
- Удалить свойство
- Установить несколько свойств
- Установить метку на узле
- Установить несколько меток на узле
Установка свойства
Используя предложение SET, вы можете создать новое свойство в узле.
Синтаксис
Ниже приведен синтаксис для установки свойства.
MATCH (node:label{properties . . . . . . . . . . . . . . }) SET node.property = value RETURN node
пример
Прежде чем приступить к примеру, сначала создайте узел с именем Dhawan, как показано ниже.
CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1985, POB: "Delhi"})
Ниже приведен пример Cypher Query для создания свойства с именем «highestscore» со значением «187» .
MATCH (Dhawan:player{name: "shikar Dhawan", YOB: 1985, POB: "Delhi"}) SET Dhawan.highestscore = 187 RETURN Dhawan
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете видеть, что свойство с парой ключ-значение Highestscore / 187 создается в узле с именем «Dhawan».
Удаление собственности
Вы можете удалить существующее свойство, передав ему значение NULL .
Синтаксис
Ниже приведен синтаксис удаления свойства из узла с помощью предложения SET.
MATCH (node:label {properties}) SET node.property = NULL RETURN node
пример
Прежде чем приступить к примеру, сначала создайте узел «jadeja», как показано ниже.
Create (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
Ниже приведен пример Cypher Query, который удаляет свойство с именем POB из этого узла с помощью предложения SET, как показано ниже.
MATCH (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) SET Jadeja.POB = NULL RETURN Jadeja
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что переменная с именем POB была удалена.
Установка нескольких свойств
Таким же образом вы можете создать несколько свойств в узле, используя предложение Set. Для этого вам нужно указать эти пары ключ-значение запятыми.
Синтаксис
Ниже приведен синтаксис для создания нескольких свойств в узле с помощью предложения SET.
MATCH (node:label {properties}) SET node.property1 = value, node.property2 = value RETURN node
пример
Ниже приведен пример Cypher Query, который создает несколько свойств в узле с помощью предложения SET в Neo4j.
MATCH (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988}) SET Jadeja.POB: "NavagamGhed", Jadeja.HS = "90" RETURN Jadeja
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете увидеть, что были созданы свойства с именами POB и HS.
Установка метки на узле
Вы можете установить метку для существующего узла, используя предложение SET.
Синтаксис
Ниже приведен синтаксис для установки метки для существующего узла.
MATCH (n {properties . . . . . . . }) SET n :label RETURN n
пример
Прежде чем приступить к примеру, сначала создайте узел «Андерсон», как показано ниже.
CREATE (Anderson {name: "James Anderson", YOB: 1982, POB: "Burnely"})
Ниже приведен пример Cypher Query для установки метки на узле с помощью предложения SET. Этот запрос добавляет метку «игрок» к узлу Андерсон и возвращает его.
MATCH (Anderson {name: "James Anderson", YOB: 1982, POB: "Burnely"}) SET Anderson: player RETURN Anderson
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что метка с именем «player» добавляется к узлу.
Установка нескольких меток на узле
Вы можете установить несколько меток для существующего узла, используя предложение SET. Здесь необходимо указать метки, разделяя их двоеточиями «:».
Синтаксис
Ниже приведен синтаксис для установки нескольких меток для существующего узла с помощью предложения SET.
MATCH (n {properties . . . . . . . }) SET n :label1:label2 RETURN n
пример
Прежде чем приступить к примеру, сначала создайте узел с именем «Ishant», как показано ниже.
CREATE (Ishant {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
Ниже приведен пример Cypher Query, который используется для создания нескольких меток на узле с помощью предложения SET.
MATCH (Ishant {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"}) SET Ishant: player:person RETURN Ishant
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что две метки — персона и игрок — добавляются в узел с именем Ishant .
Neo4j — Удалить предложение
Вы можете удалить узлы и связи из базы данных, используя предложение DELETE.
Удаление всех узлов и отношений
Ниже приведен запрос на удаление всех узлов и связей в базе данных с помощью предложения DELETE.
запрос
MATCH (n) DETACH DELETE n
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Это удалит все узлы и отношения из вашей базы данных neo4j и сделает ее пустой.
Удаление определенного узла
Чтобы удалить конкретный узел, вам необходимо указать детали узла вместо «n» в приведенном выше запросе.
Синтаксис
Ниже приведен синтаксис для удаления определенного узла из Neo4j с помощью предложения DELETE.
MATCH (node:label {properties . . . . . . . . . . }) DETACH DELETE node
пример
Прежде чем приступить к примеру, создайте узел «Ishant» в базе данных Neo4j, как показано ниже.
CREATE (Ishant:player {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
Ниже приведен пример Cypher Query, который удаляет созданный выше узел с помощью предложения DELETE.
MATCH (Ishant:player {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"}) DETACH DELETE Ishant
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что указанный узел удален.
Neo4j — удалить пункт
Предложение REMOVE используется для удаления свойств и меток из элементов графа (узлов или отношений).
Основное различие между командами Neo4j CQL DELETE и REMOVE —
- Операция DELETE используется для удаления узлов и связанных связей.
- Операция REMOVE используется для удаления меток и свойств.
Удаление собственности
Вы можете удалить свойство узла, используя MATCH вместе с предложением REMOVE.
Синтаксис
Ниже приведен синтаксис для удаления свойства узла с помощью предложения REMOVE.
MATCH (node:label{properties . . . . . . . }) REMOVE node.property RETURN node
пример
Прежде чем приступить к примеру, создайте узел с именем Dhoni, как показано ниже.
CREATE (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})
Ниже приведен пример Cypher Query для удаления созданного выше узла с помощью предложения REMOVE.
MATCH (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) REMOVE Dhoni.POB RETURN Dhoni
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что узел с именем POB был удален.
Удаление метки с узла
Подобно свойству, вы также можете удалить метку из существующего узла, используя предложение remove.
Синтаксис
Ниже приведен синтаксис для удаления метки из узла.
MATCH (node:label {properties . . . . . . . . . . . }) REMOVE node:label RETURN node
пример
Ниже приведен пример Cypher Query для удаления метки из существующего узла с помощью предложения remove.
MATCH (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) REMOVE Dhoni:player RETURN Dhoni
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что метка была удалена из узла.
Удаление нескольких меток
Вы также можете удалить несколько меток из существующего узла.
Синтаксис
Ниже приведен синтаксис для удаления нескольких меток из узла.
MATCH (node:label1:label2 {properties . . . . . . . . }) REMOVE node:label1:label2 RETURN node
пример
Прежде чем приступить к примеру, создайте узел Ishant, как показано ниже.
CREATE (Ishant:player:person {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})
Ниже приведен пример Cypher Query для удаления нескольких меток из узла.
MATCH (Ishant:player:person {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"}) REMOVE Ishant:player:person RETURN Ishant
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что указанные метки были удалены из узла.
Neo4j — пункт Foreach
Предложение FOREACH используется для обновления данных в списке, будь то компоненты пути или результат агрегации.
Синтаксис
Ниже приведен синтаксис предложения FOREACH.
MATCH p = (start node)-[*]->(end node) WHERE start.node = "node_name" AND end.node = "node_name" FOREACH (n IN nodes(p)| SET n.marked = TRUE)
пример
Прежде чем приступить к примеру, создайте путь p в базе данных Neo4j, как показано ниже.
CREATE p = (Dhawan {name:"Shikar Dhawan"})-[:TOPSCORRER_OF]->(Ind{name: "India"})-[:WINNER_OF]->(CT2013{name: "Champions Trophy 2013"}) RETURN p
Ниже приведен пример Cypher Query, который добавляет свойство ко всем узлам на пути, используя предложение FOREACH.
MATCH p = (Dhawan)-[*]->(CT2013) WHERE Dhawan.name = "Shikar Dhawan" AND CT2013.name = "Champions Trophy 2013" FOREACH (n IN nodes(p)| SET n.marked = TRUE)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Чтобы проверить создание узла, введите и выполните следующий запрос в подсказке доллара.
MATCH (n) RETURN n
Этот запрос возвращает все узлы в базе данных (мы подробно обсудим этот запрос в следующих главах).
При выполнении этот запрос показывает созданный узел, как показано на следующем снимке экрана.
Neo4j — матч-предложение
В этой главе мы узнаем о предложении Match и обо всех функциях, которые можно выполнить с помощью этого предложения.
Получить все узлы используя Match
С помощью предложения MATCH Neo4j вы можете получить все узлы в базе данных Neo4j.
пример
Прежде чем приступить к примеру, создайте 3 узла и 2 взаимосвязи, как показано ниже.
CREATE (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) CREATE (Ind:Country {name: "India", result: "Winners"}) CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"}) CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013) CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind) CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1995, POB: "Delhi"}) CREATE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) CREATE (Dhawan)-[:TOP_SCORER_OF {Runs:363}]->(Ind) CREATE (Jadeja)-[:HIGHEST_WICKET_TAKER_OF {Wickets:12}]->(Ind)
Ниже приведен запрос, который возвращает все узлы в базе данных Neo4j.
MATCH (n) RETURN n
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Получение всех узлов под определенной меткой
Используя предложение соответствия, вы можете получить все узлы под определенной меткой.
Синтаксис
Ниже приведен синтаксис для получения всех узлов под определенной меткой.
MATCH (node:label) RETURN node
пример
Ниже приведен пример Cypher Query, который возвращает все узлы в базе данных под проигрывателем меток.
MATCH (n:player) RETURN n
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Матч по соотношению
Вы можете получить узлы на основе отношений, используя предложение MATCH.
Синтаксис
Ниже приведен синтаксис получения узлов на основе отношения с использованием предложения MATCH.
MATCH (node:label)<-[: Relationship]-(n) RETURN n
пример
Ниже приведен пример Cypher Query для извлечения узлов на основе отношений с использованием предложения MATCH.
MATCH (Ind:Country {name: "India", result: "Winners"})<-[: TOP_SCORER_OF]-(n) RETURN n.name
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Удалить все узлы
Вы можете удалить все узлы, используя предложение MATCH.
запрос
Ниже приведен запрос на удаление всех узлов в Neo4j.
MATCH (n) detach delete n
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — Факультативное предложение о совпадении
Предложение OPTIONAL MATCH используется для поиска шаблона, описанного в нем, при использовании нулей для отсутствующих частей шаблона.
OPTIONAL MATCH аналогичен предложению match, единственное отличие состоит в том, что он возвращает ноль в результате пропущенных частей шаблона.
Синтаксис
Ниже приводится синтаксис ФУНКЦИОНАЛЬНОГО МАТЧА с отношением.
MATCH (node:label {properties. . . . . . . . . . . . . .}) OPTIONAL MATCH (node)-->(x) RETURN x
пример
Ниже приведен пример Cypher Query, который пытается извлечь отношения из узла ICCT2013. Поскольку таких узлов нет, возвращается ноль.
MATCH (a:Tornament {name: "ICC Champions Trophy 2013"}) OPTIONAL MATCH (a)-->(x) RETURN x
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что, поскольку для требуемого шаблона нет совпадений, Neo4j вернул ноль.
Neo4j — Где пункт
Как и SQL, Neo4j CQL предоставил предложение WHERE в команде CQL MATCH для фильтрации результатов запроса MATCH.
Синтаксис
Ниже приведен синтаксис предложения WHERE.
MATCH (label) WHERE label.country = "property" RETURN label
пример
Прежде чем приступить к примеру, создайте пять узлов в базе данных, как показано ниже.
CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"} CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"} CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"}) CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"}) CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"}) CREATE(Ind:Country {name: "India", result: "Winners"})
Ниже приведен пример Cypher Query, который возвращает всех игроков (узлов), принадлежащих стране Индия, с использованием предложения WHERE.
MATCH (player) WHERE player.country = "India" RETURN player
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
ГДЕ оговорка с несколькими условиями
Вы также можете использовать предложение WHERE для проверки нескольких условий.
Синтаксис
Ниже приводится синтаксис использования предложения WHERE в Neo4j с несколькими условиями.
MATCH (emp:Employee) WHERE emp.name = 'Abc' AND emp.name = 'Xyz' RETURN emp
пример
Ниже приведен пример Cypher Query, который фильтрует узлы в базе данных Neo4j, используя два условия.
MATCH (player) WHERE player.country = "India" AND player.runs >=175 RETURN player
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Использование отношения с предложением Where
Вы также можете использовать предложение Where для фильтрации узлов, используя отношения.
пример
Предположим, у нас есть следующий график в базе данных.
Ниже приведен пример Cypher Query для получения лучшего бомбардира Индии с помощью предложения WHERE, как показано ниже.
MATCH (n) WHERE (n)-[: TOP_SCORER_OF]->( {name: "India", result: "Winners"}) RETURN n
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что Neo4j вернул узел, имеющий отношение TOP_SCORER_OF к стране с узлом, имеющим имя Индия.
Neo4j — функция подсчета
Предположим, мы создали график в базе данных со следующими деталями.
подсчитывать
Функция count () используется для подсчета количества строк.
Синтаксис
Ниже приводится синтаксис функции count.
MATCH (n { name: 'A' })-->(x) RETURN n, count(*)
пример
Ниже приведен пример Cypher Query, который демонстрирует использование функции count () .
Match(n{name: "India", result: "Winners"})--(x) RETURN n, count(*)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Количество групп
Предложение COUNT также используется для подсчета групп типов отношений.
пример
Ниже приведен пример Cypher Query, который подсчитывает и возвращает количество узлов, участвующих в каждом отношении.
Match(n{name: "India", result: "Winners"})-[r]-(x) RETURN type (r), count(*)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Neo4j — пункт возврата
Предложение RETURN используется для возврата узлов, отношений и свойств в Neo4j. В этой главе мы узнаем, как
- Вернуть узлы
- Вернуть несколько узлов
- Возврат отношений
- Вернуться свойства
- Вернуть все элементы
- Вернуть переменную с псевдонимом столбца
Возвращающиеся узлы
Вы можете вернуть узел, используя предложение RETURN.
Синтаксис
Ниже приведен синтаксис для возврата узлов с помощью предложения RETURN.
Create (node:label {properties}) RETURN node
пример
Прежде чем приступить к примеру, создайте 3 узла и 2 взаимосвязи, как показано ниже.
Create (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) CREATE (Ind:Country {name: "India", result: "Winners"}) CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"}) CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013) CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind)
Ниже приведен пример Cypher Query, который создает узел с именем Dhoni и возвращает его.
Create (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) RETURN Dhoni
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Возврат нескольких узлов
Вы также можете вернуть несколько узлов, используя предложение return.
Синтаксис
Ниже приведен синтаксис для возврата нескольких узлов с помощью предложения return.
CREATE (Ind:Country {name: "India", result: "Winners"}) CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"}) RETURN Ind, CT2013
пример
Ниже приведен пример Cypher Query для возврата нескольких узлов с помощью предложения return.
CREATE (Ind:Country {name: "India", result: "Winners"}) CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"}) RETURN Ind, CT2013
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат. Здесь вы можете заметить, что Neo4j вернул 2 узла.
Возвращение отношений
Вы также можете вернуть отношения, используя предложение Return.
Синтаксис
Ниже приведен синтаксис для возврата отношений с использованием предложения RETURN.
CREATE (node1)-[Relationship:Relationship_type]->(node2) RETURN Relationship
пример
Ниже приведен пример Cypher Query, который создает две связи и возвращает их.
CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013) CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind) RETURN r1, r2
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Возвращая свойства
Вы также можете вернуть свойства, используя предложение RETURN.
Синтаксис
Ниже приведен синтаксис для возврата свойств с использованием предложения RETURN.
Match (node:label {properties . . . . . . . . . . }) Return node.property
пример
Ниже приведен пример Cypher Query для возврата свойств узла.
Match (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) Return Dhoni.name, Dhoni.POB
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Возврат всех элементов
Вы можете вернуть все элементы в базе данных Neo4j, используя предложение RETURN.
пример
Ниже приведен пример Cypher Query для возврата всех элементов в базе данных.
Match p = (n {name: "India", result: "Winners"})-[r]-(x) RETURN *
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Возвращение переменной с псевдонимом столбца
Вы можете вернуть определенный столбец с псевдонимом, используя предложение RETURN в Neo4j.
пример
Ниже приведен пример Cypher Query, который возвращает столбец POB как Место рождения.
Match (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) Return Dhoni.POB as Place Of Birth
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — заказ по пункту
Вы можете упорядочить данные результатов по порядку, используя предложение ORDER BY.
Синтаксис
Ниже приведен синтаксис предложения ORDER BY.
MATCH (n) RETURN n.property1, n.property2 . . . . . . . . ORDER BY n.property
пример
Прежде чем приступить к примеру, создайте 5 узлов в базе данных Neo4j, как показано ниже.
CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"}) CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"}) CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"}) CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"}) CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
Ниже приведен пример Cypher Query, который возвращает созданные выше узлы в порядке прогонов, набранных игроком с помощью предложения ORDERBY.
MATCH (n) RETURN n.name, n.runs ORDER BY n.runs
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Упорядочение узлов по нескольким свойствам
Вы можете расположить узлы на основе нескольких свойств, используя предложение ORDEYBY .
Синтаксис
Ниже приведен синтаксис для размещения узлов по нескольким свойствам с использованием предложения ORDERBY.
MATCH (n) RETURN n ORDER BY n.age, n.name
пример
Ниже приведен пример Cypher Query, который упорядочивает узлы, созданные ранее в этой главе, на основе свойств — запусков и страны.
MATCH (n) RETURN n.name, n.runs, n.country ORDER BY n.runs, n.country
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Упорядочение узлов по убыванию
Вы можете расположить узлы в базе данных в порядке убывания, используя предложение ORDERBY .
Синтаксис
Ниже приведен синтаксис для размещения узлов в базе данных.
MATCH (n) RETURN n ORDER BY n.name DESC
пример
Ниже приведен пример Cypher Query, который упорядочивает узлы в базе данных в порядке убывания с использованием предложения ORDERBY.
MATCH (n) RETURN n.name, n.runs ORDER BY n.runs DESC
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — Лимитная оговорка
Предложение limit используется для ограничения количества строк в выводе.
Синтаксис
Ниже приведен синтаксис предложения LIMIT.
MATCH (n) RETURN n ORDER BY n.name LIMIT 3
пример
Прежде чем приступить к примеру, создайте 5 узлов в базе данных Neo4j, как показано ниже.
CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"}) CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"}) CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"}) CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"}) CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
Ниже приведен пример Cypher Query, который возвращает созданные выше узлы в порядке убывания и ограничивает записи в результате до 3.
MATCH (n) RETURN n.name, n.runs ORDER BY n.runs DESC LIMIT 3
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Предел с выражением
Вы также можете использовать предложение LIMIT с выражением.
пример
Ниже приведен пример Cypher Query, который ограничивает записи с помощью выражения.
MATCH (n) RETURN n.name, n.runs ORDER BY n.runs DESC LIMIT toInt(3 * rand())+ 1
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — Пропустить статью
Предложение SKIP используется для определения, с какой строки начинать, включая строки в выводе.
пример
Прежде чем приступить к примеру, создайте 5 узлов, как показано ниже.
CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"}) CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"}) CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"}) CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"}) CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
Ниже приведен пример Cypher Query, который возвращает все узлы в базе данных, пропуская первые 3 узла.
MATCH (n) RETURN n.name, n.runs ORDER BY n.runs DESC SKIP 3
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Пропустить, используя выражение
Вы можете пропустить записи результата, используя выражение.
пример
Ниже приведен пример Cypher Query, в котором используется выражение SKIP с выражением.
MATCH (n) RETURN n.name, n.runs ORDER BY n.runs DESC SKIP toInt (2*rand())+ 1
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — с оговоркой
Вы можете связать искусство запросов вместе, используя предложение WITH.
Синтаксис
Ниже приведен синтаксис предложения WITH.
MATCH (n) WITH n ORDER BY n.property RETURN collect(n.property)
пример
Ниже приведен пример Cypher Query, который демонстрирует использование предложения WITH.
MATCH (n) WITH n ORDER BY n.name DESC LIMIT 3 RETURN collect(n.name)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — Размотать оговорку
Предложение unwind используется для раскручивания списка в последовательность строк.
пример
Ниже приведен пример Cypher Query, который раскручивает список.
UNWIND [a, b, c, d] AS x RETURN x
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — Строковые функции
Как и SQL, Neo4J CQL предоставляет набор функций String для использования их в запросах CQL для получения требуемых результатов.
Здесь мы собираемся обсудить некоторые важные и часто используемые функции.
Список строковых функций
Ниже приведен список известных функций String в Neo4j.
Sr.No | Описание функции |
---|---|
1 | ВЕРХНИЙ
Он используется для изменения всех букв в верхний регистр. |
2 | НИЖНИЙ
Используется для преобразования всех букв в строчные. |
3 | SUBSTRING
Используется для получения подстроки данной строки. |
4 | замещать
Он используется для замены подстроки заданной подстрокой строки. |
Он используется для изменения всех букв в верхний регистр.
Используется для преобразования всех букв в строчные.
Используется для получения подстроки данной строки.
Он используется для замены подстроки заданной подстрокой строки.
Neo4j — функция агрегации
Как и SQL, Neo4j CQL предоставляет некоторые функции агрегирования для использования в предложении RETURN. Это похоже на предложение GROUP BY в SQL.
Мы можем использовать эту функцию RETURN + Aggregation в команде MATCH для работы с группой узлов и возврата некоторого агрегированного значения.
Список функций AGGREGATION
Ниже приведен список функций агрегирования в Neo4j.
Sr.No | Описание функции |
---|---|
1 | COUNT
Возвращает количество строк, возвращаемых командой MATCH. |
2 | МАКСИМУМ
Возвращает максимальное значение из набора строк, возвращаемых командой MATCH. |
3 | MIN
Возвращает минимальное значение из набора строк, возвращаемых командой MATCH. |
4 | SUM
Возвращает значение суммирования всех строк, возвращаемых командой MATCH. |
5 | AVG
Возвращает среднее значение всех строк, возвращаемых командой MATCH. |
Возвращает количество строк, возвращаемых командой MATCH.
Возвращает максимальное значение из набора строк, возвращаемых командой MATCH.
Возвращает минимальное значение из набора строк, возвращаемых командой MATCH.
Возвращает значение суммирования всех строк, возвращаемых командой MATCH.
Возвращает среднее значение всех строк, возвращаемых командой MATCH.
Neo4j — Резервное копирование и восстановление
В приложениях реального времени мы должны регулярно выполнять резервное копирование базы данных наших приложений, чтобы мы могли восстановить работоспособность в любой точке сбоя.
Это правило применимо как к базам данных RDBMS, так и к базам данных NoSQL.
В этом разделе мы обсудим две важные задачи администратора баз данных.
- Как сделать резервную копию базы данных Neo4j.
- Как восстановить базу данных Neo4j в определенную резервную копию.
Примечание. Эти шаги применимы только к операционной системе Windows. Мы должны использовать команды подобного рода, чтобы делать те же шаги в других операционных системах.
Резервное копирование базы данных Neo4j
Шаг 1 — Нажмите «Neo4j Community», используя следующий путь —
Кнопка «Пуск» Windows → «Все программы» → «Сообщество Neo4j» → «Сообщество Neo4j»
По умолчанию он выбирает c: \ Users \ [имя пользователя] \ Documents \ Neo4j \ default.graphdb. Однако, если мы хотим, мы можем изменить путь к другому каталогу.
Шаг 2 — Здесь мы перешли в нашу папку базы данных Neo4j.
C: \ Ne04j2.0db
Шаг 3 — Нажмите кнопку «Пуск».
После запуска сервера мы можем наблюдать, как файлы нашей базы данных Neo4j генерируются в указанном каталоге.
Прежде чем приступить к резервному копированию базы данных, прежде всего мы должны выключить сервер базы данных Neo4j.
Шаг 4 — Нажмите кнопку «Стоп», чтобы выключить сервер.
Файлы базы данных Neo4j доступны по адресу C: \ Ne04j2.0db
Шаг 5 — Откройте командную строку.
Шаг 6 — Создайте папку «Neo4jDbBackup-01» в C: \ Neo4j (это может быть любое место в вашей файловой системе).
mkdir C:\Neo4j\Neo4jDbBackup-01
Он создает новую папку «Neo4jDbBackup-01» в указанной папке файловой системы «C: \ Neo4j \»
Шаг 7 — Введите следующую команду и нажмите клавишу Enter.
copy C:\Ne04j2.0db C:\Neo4j\Neo4jDbBackup-01
Это означает, что наши файлы копируются в нужную папку назначения. Получите доступ к этой папке и обратите внимание, что в папке есть наши файлы базы данных.
Шаг 8 — Используйте любой инструмент сжатия / распаковки Windows, такой как WinZip, 7 Zip или WinRAR, чтобы заархивировать нашу папку базы данных.
Шаг 9 — Теперь наш файл Neo4jDbBackup-01.zip создан. Если у вас есть ограничения памяти в вашей файловой системе, удалите папку «Neo4jDbBackup-01» в «C: \ Neo4j \»
Восстановление базы данных Neo4j
Шаг 1 — Завершите работу сервера базы данных. Пожалуйста, обратитесь к предыдущим шагам, чтобы выключить сервер.
Шаг 2 — Очистить текущую папку базы данных.
Шаг 3 — Используйте любой инструмент сжатия / распаковки Windows, такой как WinZip, 7 Zip или WinRar, чтобы распаковать нашу резервную папку.
Шаг 4 — Откройте командную строку и выполните следующую команду.
Copy C:\Neo4j\Neo4jDbBackup-01 C:\Ne04j2.0db
Теперь мы можем наблюдать, что наша папка базы данных содержит рабочие файлы резервных копий.
Шаг 5 — Запустите сервер, нажав кнопку «Пуск».
Шаг 6 — Выполните несколько команд MATCH + RETURN, чтобы проверить, правильно ли мы восстановили нашу базу данных.
Neo4j — Индекс
Neo4j SQL поддерживает индексы на свойствах узлов или отношений для повышения производительности приложения. Мы можем создавать индексы по свойствам для всех узлов, которые имеют одинаковое имя метки.
Мы можем использовать эти проиндексированные столбцы в операторе MATCH, WHERE или IN, чтобы улучшить выполнение команды CQL.
В этой главе мы обсудим, как
- Создать индекс
- Удалить индекс
Создание индекса
Neo4j CQL предоставляет команду «CREATE INDEX» для создания индексов на свойствах Node или Relationship.
Синтаксис
Ниже приведен синтаксис для создания индекса в Neo4j.
CREATE INDEX ON:label (node)
пример
Прежде чем приступить к примеру, создайте узел Dhawan, как показано ниже.
CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1995, POB: "Delhi"})
Ниже приведен пример Cypher Query для создания индекса на узле Dhawan в Neo4j.
CREATE INDEX ON:player(Dhawan)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано ниже.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Удаление индекса
Neo4j CQL предоставляет команду «DROP INDEX» для удаления существующего индекса свойства Node или Relationshis.
Синтаксис
Ниже приведен синтаксис для создания индекса в Neo4j.
DROP INDEX ON:label(node)
пример
Ниже приведен пример Cypher Query для создания индекса на узле с именем «Dhawan» в Neo4j.
DROP INDEX ON:player(Dhawan)
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
Neo4j — Создать уникальное ограничение
В базе данных Neo4j команда CQL CREATE всегда создает новый узел или отношение, что означает, что, даже если вы используете те же значения, она вставляет новую строку. В соответствии с требованиями нашего приложения для некоторых узлов или отношений, мы должны избегать этого дублирования. Для этого мы должны использовать некоторые ограничения базы данных, чтобы создать правило для одного или нескольких свойств узла или отношения.
Как и SQL, база данных Neo4j также поддерживает уникальное ограничение на свойства узла или отношения. Уникальное ограничение используется, чтобы избежать дублирования записей и обеспечить соблюдение правила целостности данных.
Создать УНИКАЛЬНОЕ Ограничение
Neo4j CQL предоставляет команду «CREATE CONSTRAINT» для создания уникальных ограничений на свойства узла или отношения.
Синтаксис
Ниже приведен синтаксис для создания уникального ограничения в Neo4j.
MATCH (root {name: "Dhawan"}) CREATE UNIQUE (root)-[:LOVES]-(someone) RETURN someone
пример
Прежде чем приступить к примеру, создайте 4 узла, как показано ниже.
CREATE(Dhawan:player{id:001, name: "shikar Dhawan", YOB: 1995, POB: "Delhi"}) CREATE(Jonathan:player {id:002, name: "Jonathan Trott", YOB: 1981, POB: "CapeTown"}) CREATE(Sangakkara:player {id:003, name: "Kumar Sangakkara", YOB: 1977, POB: "Matale"}) CREATE(Rohit:player {id:004, name: "Rohit Sharma", YOB: 1987, POB: "Nagpur"}) CREATE(Virat:player {id:005, name: "Virat Kohli", YOB: 1988, POB: "Delhi"})
Ниже приведен пример Cypher Query для создания уникального ограничения на идентификатор свойства с помощью Neo4j.
CREATE CONSTRAINT ON (n:player) ASSERT n.id IS UNIQUE
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.
верификация
Теперь попробуйте добавить еще один узел с избыточным значением идентификатора. Здесь мы пытаемся создать узел с идентификатором 002 .
CREATE (Jadeja:player {id:002, name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
Если вы выполните этот запрос, вы получите сообщение об ошибке, как показано на следующем снимке экрана.
Neo4j — Drop Уникальный
Мы уже обсуждали создание УНИКАЛЬНЫХ операций с ограничениями на примерах в предыдущей главе. В этой главе мы обсудим исключение операции УНИКАЛЬНОЕ ограничение с примерами.
Neo4j CQL предоставляет команду «DROP CONSTRAINT» для удаления существующего ограничения Unique из свойства узла или отношения.
Синтаксис
Ниже приводится синтаксис для отбрасывания ограничения UNIQUE в Neo4j.
DROP CONSTRAINT ON (node:label) ASSERT node.id IS UNIQUE
пример
Ниже приведен пример запроса Cypher для удаления ограничения UNIQUE для идентификатора свойства.
DROP CONSTRAINT ON (n:player) ASSERT n.id IS UNIQUE
Для выполнения вышеуказанного запроса выполните следующие шаги:
Шаг 1 — Откройте настольное приложение Neo4j и запустите сервер Neo4j. Откройте встроенное приложение браузера Neo4j, используя URL-адрес http: // localhost: 7474 /, как показано на следующем снимке экрана.
Шаг 2 — Скопируйте и вставьте нужный запрос в подсказку доллара и нажмите кнопку воспроизведения (чтобы выполнить запрос), выделенную на следующем снимке экрана.
Результат
Выполнив, вы получите следующий результат.