14.3 WHERE
Это наиболее простая для понимания вещь – просто один и тот же зверь в обоих языках. Он фильтрует результирующие наборы /подграфы. Не все предикаты имеют свой эквивалент в другом языке, однако концепции аналогичны.
SQL-запрос
SELECT * FROM "Person" WHERE "Person".age > 35 AND "Person".hair = 'blonde'
NAME | ID | AGE | HAIR |
---|---|---|---|
Bridget | 2 | 40 | blonde |
Cypher-запрос
START person=node:Person('name: *') WHERE person.age > 35 AND person.hair = 'blonde' RETURN person
person |
---|
Node[1]{name:"Bridget",id:2,age:40,hair:"blonde"} |
14.4 RETURN
Это предложение SELECT в SQL. Мы просто поместили его в конце, поскольку это кажется более естественным – вы выполнили большую работу по сопоставлению и фильтрации и, наконец, возвращаете результат.
Запросы с агрегацией работают точно так же, как и в SQL, за исключением того, что нет явного предложения GROUP BY. Всё в предложении return, что не является агрегатной функцией, будет использоваться в качестве столбцов группировки.
SQL-запрос
SELECT "Person".name, count(*) C2 FROM "Person" GROUP BY "Person".name ORDER BY "Person".name
NAME | C2 |
---|---|
Anakin | 1 |
Bridget | 1 |
Cypher-запрос
START person=node:Person('name: *') RETURN person.name, count(*) ORDER BY person.name
person.name | count(*) |
---|---|
"Anakin" | 1 |
"Bridget" | 1 |
Order by одинаков в обоих языках — ORDER BY <выражение> ASC/DESC. Тут нет ничего особенного.