Команды для работы с бд 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 <-- Выведет индексы которые созданы