MATCH
на Cypher изявлението ви позволява да намерите данни, които отговарят на даден критерий. Можете да използвате MATCH
за връщане на данните или за извършване на някаква друга операция върху тях.
MATCH
изразът се използва, за да съответства на даден критерий, но всъщност не връща информацията. За да върнете всякакви данни от MATCH
оператор, ние все още трябва да използваме RETURN
клауза.
Извличане на възел
Ето един прост пример за използване на MATCH
оператор за извличане на възел:
MATCH (p:Person) WHERE p.Name = "Devin Townsend" RETURN p
WHERE
Клаузата работи по същия начин като WHERE
на SQL клауза, тъй като ви позволява да стесните резултатите чрез предоставяне на допълнителни критерии.
Въпреки това, можете да постигнете същия резултат, без да използвате WHERE
клауза. Можете също да търсите възел, като предоставите същата нотация, която сте използвали за създаването на възела.
Следният код предоставя същите резултати като горния израз:
MATCH (p:Person {Name: "Devin Townsend"}) RETURN p
Изпълнението на някоя от горните заявки ще доведе до показване на следния възел:
Може да сте забелязали, че щракването върху възел разширява външен кръг, разделен на три секции – всяка представлява различна опция:
Щракването върху долната секция ще разшири връзките на възела:
Взаимоотношения
Можете също да преминете релации с MATCH
изявление. Всъщност това е едно от нещата, в които Neo4j е наистина добър.
Например, ако искаме да разберем кой изпълнител е издал албума, наречен Heavy as a Really Heavy Thing , можем да използваме следната заявка:
MATCH (a:Artist)-[:RELEASED]->(b:Album) WHERE b.Name = "Heavy as a Really Heavy Thing" RETURN a
Това ще върне следния възел:
Можете да видите, че моделът, който използваме в MATCH
твърдението е почти самообяснимо. Съвпада с всички изпълнители, издали албум с име Heavy as a Really Heavy Thing .
Използваме променливи (т.е. a
и b
), за да можем да се позоваваме на тях по-късно в заявката. Не предоставихме никакви променливи за връзката, тъй като не беше необходимо да се позоваваме на връзката по-късно в заявката.
Може също да забележите, че първият ред използва същия модел, който използвахме за създаване на връзката на първо място. Това подчертава простотата на езика Cypher. Можем да използваме едни и същи модели в различни контексти (т.е. за създаване на данни и за извличане на данни).
Връщане на всички възли
Можете да върнете всички възли в базата данни, просто като пропуснете всички подробности за филтриране. Следователно следната заявка ще върне всички възли в базата данни:
MATCH (n) RETURN n
Това води до връщането на всички наши възли:
Можете също да щракнете върху Редове икона отстрани за показване на данните във формат на ред:
Бъдете внимателни, когато връщате всички възли. Правенето на това в голяма база данни може да има сериозни последици за производителността. Обикновено се препоръчва да ограничите резултатите, за да избегнете непредвидени проблеми.
Вижте „Ограничаване на резултатите“ по-долу.
Ограничете резултатите
Използвайте LIMIT
за да ограничите броя на записите в изхода. Добра идея е да използвате това, когато не сте сигурни колко голям ще бъде наборът от резултати.
Така че можем просто да добавим LIMIT 5
към предишния оператор, за да ограничите изхода до 5 записа:
MATCH (n) RETURN n LIMIT 5