Cypher-запрос для получения узлов с заданными значениями свойств

Будучи новичком в Cypher Queries по Spring Data Graph, это может быть довольно тривиально...

Я ищу, что будет запрос Cypher для извлечения всех узлов, которые имеют заданное значение для пары свойств. Итак, что бы ??? в аннотации @Query для следующего:

@Query(???)
List<MyObject> findByProperty1AndProperty2(String property1, String property2)

РЕДАКТИРОВАТЬ: Итак, мне удалось использовать производные запросы, добавив зависимости Cypher (как предложено Майклом ниже). Но я, кажется, получаю следующую ошибку:

string matching regex (?i)\Qreturn\E' expected but ,' found

Я думаю, что это потому, что, кажется, создает запрос вроде:

start n=node:__types__(className="com.example.MyObject") where n.property1 = {0}, n.property2 = {1} return n

скорее, чем

start n=node:__types__(className="com.example.MyObject") where n.property1 = {0} and n.property2 = {1} return n

(Обратите внимание , вместо and в запросе)

Заранее спасибо.

1 ответ

Решение

Пожалуйста, примите во внимание, что глобальные запросы - не самая лучшая точка Neo4j, но поскольку вы используете Spring Data Neo4j, это немного облегчается.:)

На самом деле вам не нужно @Query аннотация для этого запроса.

Он в любом случае создает производный запрос, просматривая ваши свойства, если он проиндексирован, он будет использовать его как отправную точку для вашего запроса, в противном случае он извлечет все записи из "__type__"-индекс.

На самом деле это создаст запрос вроде:

start n=node:__types__(className="com.example.MyObject")
where n.property1 = {0} and n.property2 = {1} 
return n

Так что, если вы используете текущую сборку снимков SDN (которая будет выпущена как RC1 на этой неделе. Вы можете просто сделать:

List<MyObject> findByProperty1AndProperty2(String property1, String property2)

Конечно, cypher и gremlin являются необязательными зависимостями в SDN (некоторые люди не хотят использовать scala / groovy по умолчанию). Вам просто нужно добавить в ваш проект зависимость maven для cypher

<dependency>
   <groupId>org.neo4j</groupId>
   <artifactId>neo4j-cypher</artifactId>
   <version>${neo4j.version}</version>
</dependency>
Другие вопросы по тегам