pyorient icon indicating copy to clipboard operation
pyorient copied to clipboard

OGM Queries

Open marigonda opened this issue 7 years ago • 1 comments

Hello !!! I'm stuck with OGM, trying to do queries! Could you please give a few examples?

I have something like:

Node = declarative_node()

class testeJon(Node): element_plural = "testeJons" attrib1 = String() attrib2 = DateTime()

and trying to

query = query.Query ( graph, [ testeJoao1, XXXX ] )

In XXXX I could see that it accepts a few things, an instance of a Property for example... but how?

Thanks in advance! Regards

Joao

marigonda avatar Apr 10 '17 04:04 marigonda

Whew, it's been a while. Have needed to rekindle my memory of these interfaces.

I suggest avoiding instantiating Query directly. Usage is a lot simpler through the graph, or what is termed the Node's 'broker' in the graph.

Through the graph: query = graph.query(testeJon.attrib1, testeJon.attrib2)

The resulting Query instance, query, will allow you to see just the two properties attrib1 and attrib2 (in case you happen to add more) of instances of testeJon.

Through the broker, I think the following approach works: query = graph.testeJons.query(testeJon.attrib1)

The broker being named according to the element_plural, this allows queries of just attrib1.

Using the interface also meant for more sophisticated queries (like functions on properties):

query = graph.testeJons.query().what(testeJon.attrib1)

One advantage the broker interface has over the graph interface is the specifying of filters passed to Query.filter_by. Passing a dictionary to the query:

query = graph.testeJons.query(attrib1='foo')

Gives you all vertexes (not just specific properties) in the graph with attrib1 equal to 'foo'.

TropicalPenguin avatar Apr 15 '17 21:04 TropicalPenguin