Я смоделировал направленную древовидную структуру, используя базу данных графов Neo4J.Итак, у меня есть что-то вроде этого: http://ouwarovite.net/YAPC/220px-Binary_tree.svg.png (не обязательно двоичный файл)
Пользователи моей базы данных могут добавлять дочерние узлы существующих узлов по желанию, поэтому высота дерева и степень одиночногоузлы неизвестны.
Теперь я хочу сделать запрос к моему дереву следующим образом: начиная с узла x, дать мне все листья, которые являются потомками отпуска x.
Может ли этот тип запроса выполняться сGremlin или Cypher, и если да, то как это сделать, добившись максимальной производительности?(Я не нашел возможности выполнять запросы на «общих» деревьях, потому что вы всегда должны указывать максимальную глубину)
Я знаю, что это возможно с помощью инфраструктуры REST / JSON и JAVA API, как это:
POST /db/data/node/51/traverse/node
{
"return_filter" :
{
"body" : "position.endNode().hasProperty('leave')" ,
"language" : "javascript"
},
"relationships" : [ { "type" : "_default", "direction" : "out" } ] ,
"prune_evaluator" : { "name" : "none" , "language" : "builtin" }
}
(у моих листьев есть свойство 'уйти', у моих ребер нет типа -> так _default)
Есть ли более простой / лучший способ сделать это, возможно, с лучшимпроизводительность