Как сохранить иерархические данные в графе Redis и извлечь из них поддерево?
id | имя | parent_id
ab | файл | де
объявление | песня | де
до н. Боб | объявление
мн | open.txt | До нашей эры
2 ответа
Если предположить, ab
это идентификатор file
а также bc
родительский идентификатор file
затем для хранения вы можете использовать утилиту массового вставки
Или вы можете использовать следующий запрос Cypher:
CREATE (A {id:'ab', name: 'file'}), (B {id:'bc', name: 'folder'}), (A)-[:child]->(B)
Для запроса, в зависимости от данных, которые вы хотите извлечь, используйте запрос Cypher, подобный следующему:
MATCH (c)-[:child]->(p) RETURN c,p
Для типа запроса, который вы выполняете, я считаю, что было бы лучше, если бы вы поддерживали обратный край [:parent] и изменили свой запрос следующим образом:
GRAPH.QUERY Makinga "MATCH (r:Resource{Id:'6e3f67da-43ed-11e9-b149-d3f886f8337c'})-[:parent*1..]->(b:Resource) RETURN count(b) as count"
Это связано с тем, как RedisGraph описывает соединения и применяет фильтры.