Through the Java API. Code simplified below.

// Get reference to GraphDB module
OrientGraph db = [...];

try {            
 // Retrieve the channel vertex
 OrientVertex channelVtx = this.getVertex(db,
 KEY_CHANNEL_ID,
 channelId);
 
 // Retrieve the account vertex
 OrientVertex accountVtx = this.getVertex(db, 
 KEY_ACCOUNT_ID,
 accountId);
 
 try {
 // Retrieve edge                
 Edge edge = channelVtx.getEdges(
 accountVtx,
 Direction.OUT, 
 EDGE_CHANNEL_ACTIVE_USER_ACCOUNT)
 .iterator().next();                

 // Remove edge
 db.removeEdge(edge);
 }
 catch (NoSuchElementException ex) {
 throw new DataNotFoundException();
 }
}
catch (OException | DataNotFoundException ex) {
 [...]
}





On Wednesday, September 23, 2015 at 1:24:52 PM UTC+8, Enrico Risa wrote:
>
> Hi Jean
>
> how do you remove edges between Channel and Account?
>
>
>
> 2015-09-23 5:33 GMT+02:00 Jean-Sebastien Lemay <[email protected] 
> <javascript:>>:
>
>> Using OrientDB 2.1.1 Community Edition
>>
>> Situation:
>>
>>    - I have "Channel" and "Account" vertices.
>>    - Users can join channels, and when they do, a 
>>    "ChannelActiveUserAccount" edge is created between the two (from Channel 
>> to 
>>    Account)
>>    - I'm trying to run queries to determine how many users are sitting 
>>    in each channel, but I'm getting weird results
>>
>> In this instance, I know for a fact that I only have 1 user (#15:0) 
>> sitting in one of my 5 channels. See query below.
>>
>>
>>
>>
>> *SELECT   @rid,  out("ChannelActiveUserAccount")FROM Channel*
>>
>> *rid out*
>> *#31:0 []*
>> *#31:1 []*
>> *#31:2 #15:0*
>> *#31:3 []*
>> *#31:4 []*
>>
>> *{*
>> *    "result": [*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:0",*
>> *            "@version": 0,*
>> *            "rid": "#31:0",*
>> *            "out": [*
>>                 
>> *            ],*
>> *            "@fieldTypes": "rid=x"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:1",*
>> *            "@version": 0,*
>> *            "rid": "#31:1",*
>> *            "out": [*
>>                 
>> *            ],*
>> *            "@fieldTypes": "rid=x"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:2",*
>> *            "@version": 0,*
>> *            "rid": "#31:2",*
>> *            "out": [*
>> *                "#15:0"*
>> *            ],*
>> *            "@fieldTypes": "rid=x,out=z"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:3",*
>> *            "@version": 0,*
>> *            "rid": "#31:3",*
>> *            "out": [*
>>                 
>> *            ],*
>> *            "@fieldTypes": "rid=x"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:4",*
>> *            "@version": 0,*
>> *            "rid": "#31:4",*
>> *            "out": [*
>>                 
>> *            ],*
>> *            "@fieldTypes": "rid=x"*
>> *        }*
>> *    ],*
>> *    "notification": "Query executed in 0.02 sec. Returned 5 record(s)"*
>> *}*
>>
>> ----------
>>
>> However, if I decide to return the size of each array, to get a total 
>> instead, this happens.
>>
>> *SELECT *
>> * @rid,*
>> * out("ChannelActiveUserAccount").size()*
>> *FROM Channel*
>>
>> *rid out*
>> *#31:0 0*
>> *#31:1 0*
>> *#31:2 3*
>> *#31:3 0*
>> *#31:4 2*
>>
>> *{*
>> *    "result": [*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:0",*
>> *            "@version": 0,*
>> *            "rid": "#31:0",*
>> *            "out": 0,*
>> *            "@fieldTypes": "rid=x"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:1",*
>> *            "@version": 0,*
>> *            "rid": "#31:1",*
>> *            "out": 0,*
>> *            "@fieldTypes": "rid=x"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:2",*
>> *            "@version": 0,*
>> *            "rid": "#31:2",*
>> *            "out": 3,*
>> *            "@fieldTypes": "rid=x"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:3",*
>> *            "@version": 0,*
>> *            "rid": "#31:3",*
>> *            "out": 0,*
>> *            "@fieldTypes": "rid=x"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#-2:4",*
>> *            "@version": 0,*
>> *            "rid": "#31:4",*
>> *            "out": 2,*
>> *            "@fieldTypes": "rid=x"*
>> *        }*
>> *    ],*
>> *    "notification": "Query executed in 0.02 sec. Returned 5 record(s)"*
>> *}*
>>
>> I'm not sure where the 3 and 2 are coming from. So I run another query 
>> below to see all the data.
>>
>> ----------
>>
>>
>> *SELECT FROM Channel*
>>
>> *@rid @class ChannelActiveUserAccount*
>> *#31:0 Channel []*
>> *#31:1 Channel []*
>> *#31:2 Channel #70:100 #70:103 #70:119*
>> *#31:3 Channel []*
>> *#31:4 Channel #70:101 #70:102*
>>
>> *{*
>> *    "result": [*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#31:0",*
>> *            "@class": "Channel",*
>> *            "out_ChannelActiveUserAccount": [*
>>                 
>> *            ],*
>> *            "@fieldTypes": "out_ChannelActiveUserAccount=g"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#31:1",*
>> *            "@class": "Channel",*
>> *            "out_ChannelActiveUserAccount": [*
>>                 
>> *            ],*
>> *            "@fieldTypes": "out_ChannelActiveUserAccount=g"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#31:2",*
>> *            "@class": "Channel",            *
>> *            "out_ChannelActiveUserAccount": [*
>> *                "#70:100",*
>> *                "#70:103",*
>> *                "#70:119"*
>> *            ],            *
>> *            "@fieldTypes": "out_ChannelActiveUserAccount=g"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#31:3",*
>> * "@class": "Channel",            *
>> *            "out_ChannelActiveUserAccount": [*
>>                 
>> *            ],            *
>> *            "@fieldTypes": "out_ChannelActiveUserAccount=g"*
>> *        },*
>> *        {*
>> *            "@type": "d",*
>> *            "@rid": "#31:4",*
>> *            "@class": "Channel",            *
>> *            "out_ChannelActiveUserAccount": [*
>> *                "#70:101",*
>> *                "#70:102"*
>> *            ],            *
>> *            "@fieldTypes": "out_ChannelActiveUserAccount=g"*
>> *        }*
>> *    ],*
>> *    "notification": "Query executed in 0.026 sec. Returned 5 record(s)"*
>> *}*
>>
>> Now this is where I get confused, because some of the edges listed above 
>> (such as #70:101 for example) refer to edges that no longer exist. How come 
>> they are still in the array somehow? How did they not disappear?
>>
>> ----------
>>
>> If it helps, here's the database creation script:
>>
>> *CREATE CLASS Channel EXTENDS V;*
>> *CREATE CLASS Account EXTENDS V;*
>>
>> *CREATE CLASS ChannelActiveUserAccount EXTENDS E;*
>>
>> *CREATE PROPERTY ChannelActiveUserAccount.out LINK Channel;*
>> *CREATE PROPERTY ChannelActiveUserAccount.in LINK Account;*
>>
>> -- 
>>
>> --- 
>> 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] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 

--- 
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