Hi, I think operator IN is the most appropriate: SELECT * FROM B where #1:0 IN in_points_to and prop = 'test'
contains should be used with expressions against the collections item, like: SELECT * FROM B where in_points_to contains ( latitude > 100 ) Lvc@ On 14 February 2014 07:26, Andrey Lomakin <[email protected]> wrote: > Hi, > = operator for single values like in Java but LINKBAG is bag (collection) > Query should be SELECT * FROM B where in_points_to contains #1:0 . > > About composite index usage. > Just issue query > > SELECT * FROM B where in_points_to contains #1:0 and prop = 'test' > > and index will be reused automatically. > > > > > On Fri, Feb 14, 2014 at 1:35 AM, Mac Adada <[email protected]> wrote: > >> Thanks, for the quick reply. I tried using LINKBAG and it seemed to work >> perfectly, I verified everything was getting added to the index as it >> should be. My trouble now comes from querying it. >> >> Given class A and class B connected by edge "points_to" (A -> B). I >> created an index called testIdx of type LINKBAG on the "in_points_to" >> property of B. I'm unclear on how to query the in_points_to property. doing >> something like "SELECT * FROM B where in_points_to = #1:0" I get no >> results. If however I do "SELECT * FROM index:testIdx" I see the index >> entry is definitely there, with a key of #1:0. I got around this by doing: >> "SELECT * FROM B WHERE @RID IN (SELECT rid from index:testIdx = #1:0)" and >> this seems to work. >> >> My first question is whether this is the right way to do it or not ? >> >> My second problem comes from using composite index with LINKBAG. If i try >> to select a composite index as shown >> https://github.com/orientechnologies/orientdb/wiki/Indexes , I get a >> null pointer exception. Specifically doing something like SELECT FROM >> index:testIdx where key = [#1:0, "test"] throws: >> >> Error: >> com.orientechnologies.orient.enterprise.channel.binary.OResponseProcessingException: >> Exception during response processing. >> Error: >> com.orientechnologies.orient.core.exception.OCommandExecutionException: >> Error on execution of command: sql.select * from index:testIdx where key = >> [#1:0, "test"] >> Error: java.lang.NullPointerException >> >> Where as select * from index:testIdx shows that the index entry exists >> and the key value is: OCompositeKey{keys=[#1:0, test]} >> >> I'm not sure if i'm querying incorrectly or this is a bug. I'm running >> 1.7-rc2 and my graph is from the develop branch from earlier today. >> >> Cheers, >> Mahmoud >> >> >> >> >> On Thursday, February 13, 2014 5:37:55 AM UTC-5, Andrey Lomakin wrote: >> >>> Hi, >>> Yes it is possible , but you have to set type of field which is used for >>> connection directly (you should set it to LINKBAG) here is example of non >>> composite index https://github.com/orientechnologies/orientdb/ >>> blob/develop/graphdb/src/test/java/com/orientechnologies/ >>> orient/graph/blueprints/EdgeIndexingTest.java but creation of composite >>> index is similar (fields for out edges use out_ prefix and fields for in >>> edges use in_ prefix accordingly). >>> >>> >>> >>> On Wed, Feb 12, 2014 at 11:31 PM, Mac Adada <[email protected]> wrote: >>> >>>> >>>> Great, thanks for the help Andrey! >>>> >>>> So it seems SQL is the way to go to get the most out of orientdb at the >>>> moment. I have one further follow up question. Is it possible to create a >>>> composite key on incoming/outgoing edges, and then query it via SQL ? ie if >>>> I have Root{name:"root"} --> Test{id:1} and I would like to create an index >>>> on something like (Test.id,Test.in.name). >>>> >>>> Cheers, >>>> Mahmoud >>>> >>>> >>>> On Wednesday, February 12, 2014 12:13:44 PM UTC-5, Andrey Lomakin wrote: >>>> >>>>> Hi, >>>>>> >>>>>> When using the java api, the orient docs indicate that to use an >>>>>> index with the getVerticies method, I should use >>>>>> getVerticies(Class.Property, value) ie >>>>>> getVerticies("TestClass.testId",123) >>>>>> . However does the same apply when using gremlin ? If i had something >>>>>> like >>>>>> g. ... .out("link_to_test").has("testId",123) would gremlin use the >>>>>> testId index ? Because has("Test.testId",123) does not seem to work. >>>>> >>>>> >>>>> Gremlin needs vertex centric index for such kind of queries it is in >>>>> our roadmap but is not implemented yet. >>>>> >>>>>> Am I right in assuming something like >>>>>> pipe.start(root).out("link_to_test").has("testId",123) >>>>>> can't be represented using the VertexQuery api ? Something like >>>>>> root.query().labels("link_to_test").vertices() would return a list >>>>>> of vertices and I would have to filter them manually by the testId >>>>>> property >>>>>> ? >>>>> >>>>> Yes you are right. >>>>> >>>>>> Are there any performance advantages/disadvantages to using the >>>>>> VertexQuery or gremlin api as opposed to the SQL api ? >>>>> >>>>> Usually SQL queries are faster because they use database internal >>>>> features. >>>>> >>>>>> If I create a compound index, is there anyway to query over that >>>>>> compound index using the gremlin api ? >>>>> >>>>> You should use SQL in such case, gremlin does not have such kind of >>>>> index in it's model. >>>>> >>>>> >>>>> On Wed, Feb 12, 2014 at 2:19 AM, Mac Adada <[email protected]> wrote: >>>>> >>>>>> Hey all, >>>>>> >>>>>> New to graph DBs and to Orient in particular. I have a few questions >>>>>> I can't seem to find the answer to, and was wondering if anyone could >>>>>> help. >>>>>> >>>>>> >>>>>> 1. When using the java api, the orient docs indicate that to use >>>>>> an index with the getVerticies method, I should use >>>>>> getVerticies(Class.Property, value) ie >>>>>> getVerticies("TestClass.testId",123) >>>>>> . However does the same apply when using gremlin ? If i had >>>>>> something like >>>>>> g. ... .out("link_to_test").has("testId",123) would gremlin use >>>>>> the testId index ? Because has("Test.testId",123) does not seem >>>>>> to work. >>>>>> 2. Am I right in assuming something like >>>>>> pipe.start(root).out("link_to_test").has("testId",123) can't be >>>>>> represented using the VertexQuery api ? Something like >>>>>> root.query().labels("link_to_test").vertices() would return a >>>>>> list of vertices and I would have to filter them manually by the >>>>>> testId >>>>>> property ? >>>>>> 3. Are there any performance advantages/disadvantages to using >>>>>> the VertexQuery or gremlin api as opposed to the SQL api ? >>>>>> 4. If I create a compound index, is there anyway to query over >>>>>> that compound index using the gremlin api ? >>>>>> >>>>>> I apologize if some of these questions have already been asked and >>>>>> answered. Thanks for the help! >>>>>> Mahmoud >>>>>> >>>>>> -- >>>>>> >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "OrientDB" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> >>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Best regards, >>>>> Andrey Lomakin. >>>>> >>>>> Orient Technologies >>>>> the Company behind OrientDB >>>>> >>>>> -- >>>> >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "OrientDB" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>> >>> >>> >>> -- >>> Best regards, >>> Andrey Lomakin. >>> >>> Orient Technologies >>> the Company behind OrientDB >>> >>> -- >> >> --- >> You received this message because you are subscribed to the Google Groups >> "OrientDB" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > > > -- > Best regards, > Andrey Lomakin. > > Orient Technologies > the Company behind OrientDB > > -- > > --- > You received this message because you are subscribed to the Google Groups > "OrientDB" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
