Как вернуть дерево объектов из запроса из Neo4j Graphenedb в C#

Я делаю запрос на Neo4j в GrapheneDB, но он возвращает все комбинации совпадений, поэтому у меня есть это дерево:

Дерево

Но когда я его запрашиваю, он возвращает список комбинаций всех путей, например комбинационную таблицу (даже в представлении JSON):

таблица

Мне нужны вложенные объекты дерева, поэтому я могу легко привязать их к интерфейсу UWP, например: Использование Cypher для возврата вложенного иерархического JSON из дерева

Я использовал эту команду:

MATCH (p:Pessoa)-[ev:VENDA]-(y)-[e1]-(itemdopedido)-[e2]-(itemdoestoque) 
CALL apoc.convert.toTree(p) yield value
RETURN value;

но я получаю эту ошибку:

ОШИБКА Neo.ClientError.Procedure.ProcedureNotFound Для этого экземпляра базы данных не зарегистрирована процедура с именем apoc.convert.toTree. Пожалуйста, убедитесь, что вы правильно написали имя процедуры и правильно ли она развернута.

На С# я создал свои классы для вершин и ребер:

public class Pedido
{
    public string since { get; set; }
}

public class ItemDoPedido
{
    public double ValorUnitario { get; set; }
}

public class ItemDoEstoque
{
    public string Nome { get; set; }
    public string UnidadeDeMedida { get; set; }
}

public class Pessoa
{
    public string Nome { get; set; }
    //public string Telefone { get; set; }
    public string Facebook { get; set; }
}

Затем я попытался использовать некоторую группировку:

var results = query.Results.GroupBy(
                    q => new { q.Pessoa, q.Pedido, q.ItemDoPedido, q.ItemDoEstoque }

                )
                .Select(y => new
                {
                    Pessoa = y.Key.Pessoa,
                    Venda = y.Key.Pedido//,                        
                    //Children = y.ToList()
                }
                );
            ;

но я думаю, что это усложняется, я предпочитаю, чтобы дерево объектов было готово из запроса к серверу.

Как я могу это сделать?


person Tony    schedule 07.04.2018    source источник


Ответы (1)


Похоже, что он не может найти процедуру, вероятно, потому, что APOC не установлен. Вы можете добавить APOC в GrapheneDB из представления управления расширениями. Подробнее здесь

person Juanjo    schedule 07.04.2018
comment
Я сделал это, включил его, перезапустил сервер, но теперь сервер выдает Internal Server Error. - person Tony; 07.04.2018
comment
Neo4j не может запуститься, потому что версия APOC, вероятно, слишком старая. Просто загрузите последнюю версию и повторите попытку. - person Juanjo; 07.04.2018
comment
Я перешел по этой ссылке и использовал github.com/ neo4j-contrib/neo4j-apoc-procedures/releases/tag/ сейчас попробую github.com/neo4j-contrib/neo4j-apoc-procedures/releases/ - person Tony; 07.04.2018
comment
Да, эта версия довольно старая и не будет работать с новыми версиями Neo4j. - person Juanjo; 07.04.2018