Cypher — это язык запросов к графовым базам данных с богатой выразительностью и высокой эффективностью запросов, его статус и роль сравнимы с языком SQL в реляционных базах данных.
Способности Сайфера:
-
Cypher Extracts Информация или изменяет данные по узлам сопоставления шаблонов и взаимосвязи в диаграмме базы данных.
-
В операторах Cypher разрешено использовать переменные для представления именования, элементов привязки и параметров.
-
Операторы Cypher могут создавать, обновлять и удалять узлы, отношения, метки и атрибуты.
-
Операторы Cypher могут управлять индексами и ограничениями.
Простой синтаксис Cypher:
-
1. Синтаксис узла: пара круглых скобок используется для представления узлов. как:
(),(foo) -
2. Реляционная грамматика: используйте пару тире для обозначения ненаправленной связи и направленную стрелку плюс. как:
-[role]-,-[:ACTED_IN]->,-[role:ACTED_IN]-> -
3. Грамматика шаблонов. Сочетание грамматик узлов и отношений может выражать шаблоны. как:
(keanu: Person: Actor {name: "Keanu Rteves"}-[role:ACTED_IN {roles: ["Neo"]}]->{matrix: Movie {title: "The Matrix"}})
Поддерживаемые типы значений обработки Cypher:
- Числовой, Строковый, Логический, Узел, Связь, Путь, Карта, Список
Все функции на языке запросов Cypher:
- Предикатная функция, скалярная функция, функция списка, математическая функция, строковая функция, пользовательская функция
Режим разработки программы Neo4j:
-
Режим встроенной разработки Java, разработчики Java могут напрямую вызывать API Neo4j в коде и встраивать работу базы данных Neo4j в код Java;
-
Режим разработки драйверов с использованием интегрированных пакетов драйверов или библиотек драйверов, таких как .net, JavaScript, Python, php и т. д., может взаимодействовать с Neo4j.
Часто используемые предложения
- 1. Создайте оператор узла
CREATE (n {name:"张三"}) //创建节点并给节点分配一个属性
CREATE ({name:"李四"})-[r:have]->({bookname:"设计模式"}) //创建一个关系,给两个节点建立关系指定关系类型、方向和绑定一个变量
- 2. Заявление о запросах
MATCH (n{name:"张三"}) RETURN n //根据属性匹配节点信息
MATCH (n:Person)-[:FRIEND]->(m:Person) WHERE n.name = '张三' //匹配节点时指定标签、属性和关系类型
MATCH (n)-[k:KNOWS]->(f) WHERE k.since < 2000 RETURN f //根据关系属性过滤
- 3. Обновление и удаление узла
MATCH (n {name:'张三'}) SET n={age:20} //修改节点信息,覆盖节点属性
MATCH (n {name:'张三'}) SET n+={age:20} RETURN n //该语句不会删除掉name属性,而是在节点中新增age属性
MATCH (n{name:'张三'}) remove n.age RETURN n //删除节点属性
MATCH (a)-[r:KNOWS]->(b) DELETE r,b //删除一个节和关系
- 4. Индексы и ограничения
CREATE INDEX ON :Person(name) //为"Person"标签的name属性创建索引
DROP CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE //创建节点属性唯一约束