Если вы видите что-то необычное, просто сообщите мне. Skip to main content

Команды для работы с бд neo4j

Создание записи

CREATE (user:User {<<Ключ>>:<<Значение>>,})

Получение всех пользователей

MATCH (user:User)

Получение одного или несколько пользователей по какому либо значению

MATCH (user:User {<<Ключ>>: <<Значение>>})
MATCH (user_parent:User {<<Ключ>>: <<Значение>>})
MATCH (user_children:User {<<Ключ>>: <<Значение>>})

Cоздание связи между пользователями

CREATE (user_children)-[:ИМЯ СВЯЗИ(Указывается капсом)]->(user_parent) 

Получение детей у пользователя

MATCH p=(user:User {Ключ:'Значение'})<-[:ИМЯ СВЯЗИ*]-(:User) RETURN p

Получение родителей у пользователя

MATCH p=(user:User {Ключ:'Значение'})-[:ИМЯ СВЯЗИ*]->(:User) RETURN p 

Выгрузка из файла

LOAD CSV WITH HEADERS FROM "ТУТ ПУТЬ К ФАЙЛУ(Если он внутри neo4j то указывается через file:// можно брать с сервера через http/https" AS row MERGE (user:User {{Ключ: row.<<значение из файла>>}})

MERGE работает как get_or_create(Тоесть если он нашел в данном случае пользователя то будет использовать его, если не нашел он его создаст)
В случае выгрузки из файла, не получилось найти старые объекты. Создавал новые

Изменение какого-либо поля у пользователя(ей) сохраняет сам

MATCH (user:User)
SET user.<<имя ключа>> = 10 + 10 

Для того, что бы проверить почему тормозит запрос и с целью оптимизации, перед запросом указать PROFILE внутри neo4j
Детально опишет запрос.

CREATE INDEX ON :<Имя>(<Ключ>) <-- Создает индекс в бд
CALL db.indexes <-- Выведет индексы которые созданы