I just discovered in the github issues that there seem to be some issue 
with fetchplan.  

I did find an answer to my side question.  Change this:

select *, @this.toJSON('fetchPlan:[*]out_IsChildOf:-1 [*]in_IsChildOf*:-2') 
from Person where Name = "Frank"

to:

select *, @this.toJSON('rid,version,fetchPlan:[*]out_IsChildOf:-1 
[*]in_IsChildOf*:-2') from Person where Name = "Frank"




On Wednesday, August 19, 2015 at 11:02:03 PM UTC-4, Chris Whalen wrote:
>
> I have been playing around with people graphs and determining ancestors 
> and descendants.  I've been banging my head trying to figure out how to get 
> a set of records and their ancestors/descendants (see here 
> <https://groups.google.com/forum/#!topic/orient-database/4ltzMIfg7rk>). 
>  When I got the ancestors, I was only getting back the record ids.  I then 
> had to do a separate query to get the records for those rids.  I now see 
> that was the wrong approach.  OrientDB gives us FETCHPLAN to grab the json 
> of the record and levels of traversal through the edges.
>
> Here is what I have so far:
>
> *Person* extends V
> Person.Name = String
> Person.Age = Integer
>
> *IsChildOf* extends E
>
> Here is a sample graph I've constructed:
>
>
> <https://lh3.googleusercontent.com/-eYDwxm1ZycQ/VdVAG5JIEmI/AAAAAAAAGB4/vzEYN7c88GE/s1600/familytree.jpg>
>
>
> Now, I want to run a query to get Frank and his ancestral tree, so I've 
> tried running:
>
> select *, @this.toJSON('fetchPlan:[*]out_IsChildOf:-1 [*]in_IsChildOf*:-2'
> ) from Person where Name = "Frank"
>
> This gives me the intended output:
>
> {
>   "Name": "Frank",
>   "Age": 58,
>   "out_IsChildOf": [
>     {
>       "out": "#12:0",
>       "in": {
>         "Name": "Bob",
>         "Age": 80,
>         "in_IsChildOf": [
>           "#13:6"
>         ],
>         "out_IsChildOf": [
>           {
>             "out": "#12:5",
>             "in": {
>               "Name": "Gladis",
>               "Age": 98,
>               "in_IsChildOf": [
>                 "#13:10"
>               ]
>             }
>           }
>         ]
>       }
>     },
>     {
>       "out": "#12:0",
>       "in": {
>         "Name": "Jane",
>         "Age": 75,
>         "in_IsChildOf": [
>           "#13:7"
>         ]
>       }
>     }
>   ]
> }
>
> Great! Now, let's try and find the ancestral tree of someone a bit deeper, 
> let's pick Mary
>
> select *, @this.toJSON('fetchPlan:[*]out_IsChildOf:-1 [*]in_IsChildOf*:-2'
> ) from Person where Name = "Mary"
>
> Uh oh
>
> {
>   "Name": "Mary",
>   "Age": 24,
>   "out_IsChildOf": [
>     {
>       "out": "#12:4",
>       "in": {
>         "Name": "Susan",
>         "Age": 57,
>         "in_IsChildOf": [
>           {
>             "out": {
>               "Name": "Tony",
>               "Age": 29,
>               "out_IsChildOf": [
>                 {
>                   "out": "#12:2",
>                   "in": {
>                     "Name": "Frank",
>                     "Age": 58,
>                     "out_IsChildOf": [
>                       {
>                         "out": "#12:0",
>                         "in": {
>                           "Name": "Bob",
>                           "Age": 80,
>                           "in_IsChildOf": [
>                             "#13:6"
>                           ],
>                           "out_IsChildOf": [
>                             {
>                               "out": "#12:5",
>                               "in": {
>                                 "Name": "Gladis",
>                                 "Age": 98,
>                                 "in_IsChildOf": [
>                                   "#13:10"
>                                 ]
>                               }
>                             }
>                           ]
>                         }
>                       },
>                       {
>                         "out": "#12:0",
>                         "in": {
>                           "Name": "Jane",
>                           "Age": 75,
>                           "in_IsChildOf": [
>                             "#13:7"
>                           ]
>                         }
>                       }
>                     ],
>                     "in_IsChildOf": [
>                       "#13:0",
>                       {
>                         "out": {
>                           "Name": "Steven",
>                           "Age": 25,
>                           "out_IsChildOf": [
>                             {
>                               "out": "#12:3",
>                               "in": "#12:1"
>                             },
>                             "#13:3"
>                           ],
>                           "in_IsChildOf": [
>                             {
>                               "out": {
>                                 "Name": "Dave",
>                                 "Age": 12,
>                                 "out_IsChildOf": [
>                                   "#13:8",
>                                   {
>                                     "out": "#12:7",
>                                     "in": {
>                                       "Name": "Amy",
>                                       "Age": 32,
>                                       "in_IsChildOf": [
>                                         "#13:9"
>                                       ]
>                                     }
>                                   }
>                                 ]
>                               },
>                               "in": "#12:3"
>                             }
>                           ]
>                         },
>                         "in": "#12:0"
>                       },
>                       {
>                         "out": "#12:4",
>                         "in": "#12:0"
>                       }
>                     ]
>                   }
>                 },
>                 "#13:1"
>               ]
>             },
>             "in": "#12:1"
>           },
>           "#13:2",
>           "#13:4"
>         ]
>       }
>     },
>     "#13:5"
>   ]
> }
>  
> What happened?  Why is the fetch plan grabbing the in_IsChildOf when I 
> thought I explicitly informed it to ignore that path via the '
> [*]in_IsChildOf*:-2.  How do you have a fetch plan only follow a single 
> relationship type in a single direction, ignoring all other relationships?
>
> Side Question: Why does the fetch plan not return a record rid?  How are 
> you supposed to resolve circular references without knowing what record 
> corresponds with the rid?
>
>
>
>
>
>
>

-- 

--- 
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/d/optout.

Reply via email to