Neo4j има свой собствен език за заявки, наречен Cypher. Cypher използва синтаксис, подобен на SQL (Structured Query Language).
Пример
Ето пример за изявление Cypher:
MATCH (p:Person { name:"Homer Flinstone" }) RETURN p
Този оператор Cypher връща възел "Person", където свойството name е "Homer Flinstone".
Ако това беше SQL заявка към релационна база данни, може да изглежда по-скоро така:
SELECT * FROM Person WHERE name = "Homer Flinstone";
Не забравяйте обаче, че Neo4j не съхранява данните си в таблици като модела на релационна база данни. Всичко е във възли и връзки. Така че заявката за Cypher по-горе е заявка за възли, техните етикети и техните свойства. SQL примерът, от друга страна, е заявка за таблици, редове и колони.
SQL е проектиран да се използва с релационни системи за управление на бази данни (СУБД). Neo4j е NoSQL СУБД, тъй като не използва релационния модел и не използва SQL.
Cypher е проектиран специално за работа с модела на данни Neo4j, който е свързан с възли и техните взаимоотношения помежду си.
ASCII-Art синтаксис
Cypher използва ASCII-Art за представяне на модели. Това е удобно нещо, което трябва да запомните, когато за първи път изучавате езика. Ако забравите как да напишете нещо, просто си представете как ще изглежда графиката и това би трябвало да помогне.
(a)-[:KNOWS]->(b)
Основните неща, които трябва да запомните:
- Възлите са представени със скоби, които изглеждат като кръгове. Така:
(възел)
- Взаимоотношенията са представени със стрелки. Така:
->код>
- Информация за връзка може да се вмъкне между квадратни скоби. Като това:
[:ЗНАЕ]
Дефиниране на данните
Ето още няколко точки, които трябва да запомните, когато работите с Cypher:
- Обикновено възлите имат етикети. Примерите могат да включват "Лице", "Потребител", "Актор", "Служител", "Клиент".
- Възлите обикновено имат свойства. Свойствата предоставят допълнителна информация за възела. Примерите могат да включват „Име“, „Възраст“, „Роден“ и т.н.
- Връзките също могат да имат свойства.
- Връзките обикновено имат тип (това по същество е като етикет на възел). Примерите могат да включват "ЗНАЕ", "Харесва", "РАБОТИ_ЗА", "КУПЕНО" и т.н.
Така че погледнете отново горния пример:
MATCH (p:Person { name:"Homer Flinstone" }) RETURN p
Можем да видим, че:
- Възелът е заобиколен от скоби
()
. Лице
е етикетът на възела.име
е свойство на възела.