diff options
Diffstat (limited to 'uk-ua/cypher-ua.html.markdown')
-rw-r--r-- | uk-ua/cypher-ua.html.markdown | 97 |
1 files changed, 39 insertions, 58 deletions
diff --git a/uk-ua/cypher-ua.html.markdown b/uk-ua/cypher-ua.html.markdown index 2427c442..281289c9 100644 --- a/uk-ua/cypher-ua.html.markdown +++ b/uk-ua/cypher-ua.html.markdown @@ -13,11 +13,9 @@ Cypher - це мова запитів Neo4j для спрощення робот [Деталі тут](https://neo4j.com/developer/cypher-query-language/) +## Вершини -Вершини ---- - -**Відображує запис у графі.** +#### Відображує запис у графі `()` Таким чином у запиті позначається пуста *вершина*. Використовується зазвичай для того, щоб позначити, що вона є, проте це не так вже й важливо для запиту. @@ -36,27 +34,24 @@ Cypher - це мова запитів Neo4j для спрощення робот Наступні типи дозволяється використовувати у властивостях: - - Чиселиний - - Булевий - - Рядок - - Списки попередніх примітивних типів +- Чиселиний +- Булевий +- Рядок +- Списки попередніх примітивних типів *Увага! В Cypher не існує типу, що відображає час. Замість нього можна використовувати рядок із визначеним шаблоном або чисельне відображення певної дати.* `p.name` За допомогою крапки можна звернутись до властивості вершини. - -Зв'язки (або ребра) ---- - -**Сполучають дві вершини** +## Зв'язки (або ребра) +#### Сполучають дві вершини `[:KNOWS]` Це *зв'язок* з *ярликом* **KNOWS**. Це такий же самий *ярлик* як і у вершини. Починається з великої літери та використовує ВЕРХНІЙ\_РЕГІСТР\_ІЗ\_ЗМІЇНОЮ\_НОТАЦІЄЮ. `[k:KNOWS]` -Це той же самий *зв'язок*, до якого можна звертатись через змінну **k**. Можна подалі використовувати у запиті, хоч це і не обов'язково. +Це той же самий *зв'язок*, до якого можна звертатись через змінну **k**. Можна подалі використовувати у запиті, хоч це і не обов'язково. `[k:KNOWS {since:2017}]` Той же *зв'язок*, але вже із *властивостями* (як у *вершини*), в данному випадку властивість - це **since**. @@ -64,11 +59,8 @@ Cypher - це мова запитів Neo4j для спрощення робот `[k:KNOWS*..4]` Це структурна інформація, яку використовують *шляхи*, які розглянуті нижче. В данному випадку, **\*..4** говорить: "Сумістити шаблон із зв'язком **k**, що повторюватиметься від одного до чотирьох разів." - -Шляхи ---- - -**Спосіб поєднувати вершини та зв'язки.** +## Шляхи +#### Спосіб поєднувати вершини та зв'язки. `(a:Person)-[:KNOWS]-(b:Person)` Шлях описує, що вершини **a** та **b** знають (knows) один одного. @@ -84,8 +76,8 @@ Cypher - це мова запитів Neo4j для спрощення робот Шаблони, які часто використовуються (з документації Neo4j): -``` -// Друг-мого-друга +```cypher +// Друг-мого-друга (user)-[:KNOWS]-(friend)-[:KNOWS]-(foaf) // Найкоротший шлях @@ -98,13 +90,11 @@ path = shortestPath( (user)-[:KNOWS*..5]-(other) ) (root)<-[:PARENT*]-(leaf:Category)-[:ITEM]->(data:Product) ``` - -Запити на створення ---- +## Запити на створення Створити нову вершину: -``` +```cypher CREATE (a:Person {name:"Théo Gauchoux"}) RETURN a ``` @@ -113,52 +103,51 @@ RETURN a Створити новий зв'язок (із двома вершинами): -``` +```cypher CREATE (a:Person)-[k:KNOWS]-(b:Person) RETURN a,k,b ``` -Запити на знаходження ---- +## Запити на знаходження Знайти всі вершини: -``` +```cypher MATCH (n) RETURN n ``` Знайти вершини за ярликом: -``` +```cypher MATCH (a:Person) RETURN a ``` Знайти вершини за ярликом та властивістю: -``` +```cypher MATCH (a:Person {name:"Théo Gauchoux"}) RETURN a ``` Знайти вершини відповідно до зв'язків (ненаправлених): -``` +```cypher MATCH (a)-[:KNOWS]-(b) RETURN a,b ``` Знайти вершини відповідно до зв'язків (направлених): -``` +```cypher MATCH (a)-[:MANAGES]->(b) RETURN a,b ``` Знайти вершини за допомогою `WHERE`: -``` +```cypher MATCH (p:Person {name:"Théo Gauchoux"})-[s:LIVES_IN]->(city:City) WHERE s.since = 2015 RETURN p,state @@ -166,19 +155,17 @@ RETURN p,state Можна використовувати вираз `MATCH WHERE` разом із операцією `CREATE`: -``` +```cypher MATCH (a), (b) WHERE a.name = "Jacquie" AND b.name = "Michel" CREATE (a)-[:KNOWS]-(b) ``` - -Запити на оновлення ---- +## Запити на оновлення Оновити окрему властивість вершини: -``` +```cypher MATCH (p:Person) WHERE p.name = "Théo Gauchoux" SET p.age = 23 @@ -186,7 +173,7 @@ SET p.age = 23 Оновити всі властивості вершини: -``` +```cypher MATCH (p:Person) WHERE p.name = "Théo Gauchoux" SET p = {name: "Michel", age: 23} @@ -194,7 +181,7 @@ SET p = {name: "Michel", age: 23} Додати нову властивіcть до вершини: -``` +```cypher MATCH (p:Person) WHERE p.name = "Théo Gauchoux" SET p + = {studies: "IT Engineering"} @@ -202,19 +189,17 @@ SET p + = {studies: "IT Engineering"} Повісити ярлик на вершину: -``` +```cypher MATCH (p:Person) WHERE p.name = "Théo Gauchoux" SET p:Internship ``` - -Запити на видалення ---- +## Запити на видалення Видалити окрему вершину (пов'язані ребра повинні бути видалені перед цим): -``` +```cypher MATCH (p:Person)-[relationship]-() WHERE p.name = "Théo Gauchoux" DELETE relationship, p @@ -222,7 +207,7 @@ DELETE relationship, p Видалити властивість певної вершини: -``` +```cypher MATCH (p:Person) WHERE p.name = "Théo Gauchoux" REMOVE p.age @@ -230,17 +215,17 @@ REMOVE p.age *Зверніть увагу, що ключове слово `REMOVE` це не те саме, що й `DELETE`!* -Видалити ярлик певної вершини: +Видалити ярлик певної вершини: -``` +```cypher MATCH (p:Person) WHERE p.name = "Théo Gauchoux" DELETE p:Person ``` -Видалити всю базу даних: +Видалити всю базу даних: -``` +```cypher MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n, r @@ -248,9 +233,7 @@ DELETE n, r *Так, це `rm -rf /` на мові Cypher !* - -Інші корисні запити ---- +## Інші корисні запити `PROFILE` Перед виконанням, показати план виконання запитів. @@ -261,11 +244,9 @@ DELETE n, r `LIMIT x` Обмежити результат до x перших результатів. +## Особливі підказки -Особливі підказки ---- - -- У мові Cypher існують лише однорядкові коментарі, що позначаються двійним слешем : // Коментар +- У мові Cypher існують лише однорядкові коментарі, що позначаються двійним слешем : `// Коментар` - Можна виконати скрипт Cypher, збережений у файлі **.cql** прямо в Neo4j (прямо як імпорт). Проте, не можна мати мати кілька виразів в цьому файлі (розділених **;**). - Використовуйте командний рядок Neo4j для написання запитів Cypher, це легко і швидко. - Cypher планує бути стандартною мовою запитів для всіх графових баз даних (більш відома як **OpenCypher**). |