2016-10-10 7 views
0

Я использую GraphObject для сопоставления узлов Neo4j с классами Python, мне нравится, когда я получаю узел с отношениями, потому что получаю его узлы также как классы Python. Например, если мой класс - Person, я могу использовать Person.select и получить объекты Person.Сложный запрос neo4j from GraphObject

Теперь мне нужно выполнить сложный запрос, чтобы он вызывал пространственную процедуру, я могу сделать это только с помощью graph.run («MY_COMPLEX_QUERY»), но это возвращает узлы (и эти узлы не имеют отношения).

Возможно ли выполнить любой запрос с помощью селектора GraphObject с помощью одного запроса? Есть идеи?

Спасибо !!, С уважением

PD: я могу получить все идентификаторы, и после использования Person.select по идентификатору, но это не является хорошим решением.

+0

Если вы можете построить свой запрос в терминах предикатного выражения ('WHERE '), вы можете использовать 'Person.select (* args) .where (" <предикатное выражение> ")' для добавления предикатов к этой специализированной выберите запрос. Но вы действительно не должны полагаться на OGM «py2neo» для выполнения любого уровня сложной работы, он использует только очень небольшое подмножество Cypher. –

+0

Привет, я не могу, мне нужно вызвать пространственную процедуру. Спасибо Я думаю, чтобы создать статический метод, который преобразует узел Neo4j в Json, и поэтому я использую только один запрос (но мне нужно сохранить два подобных метода по классу ...). Нет решения? Благодаря!! –

ответ

0

Вы не можете сделать все это в одном запросе. За кулисами py2neo даже не выполняет всю свою работу в одном запросе. Если вы действительно хотите получить GraphObjects, вы можете сделать это из списка узлов следующим образом:

def make_GraphObjects(graph, GraphObjectCls, nodes): 
    for node in nodes: 
     obj = GraphObjectCls.wrap(node) 
     graph.pull(obj) 
     yield obj 

Это будет больше, чем одна сделка, но это предел использования OGM. Он утверждает, что упрощает ваши взаимодействия, но я считаю, что это в основном ограничивает их.

 Смежные вопросы

  • Нет связанных вопросов^_^