create class User extends V
create class Post extends V
create class Posted extends E
create vertex User set name = 'user1'
create vertex User set name = 'user2'
create vertex Post set name = 'post0'
create vertex Post set name = 'post1'
create vertex Post set name = 'post2'
create edge Posted from (select from Post where name = 'post0') to (select from User where name = 'user1')
create edge Posted from (select from Post where name = 'post1') to (select from User where name = 'user1')
create edge Posted from (select from Post where name = 'post2') to (select from User where name = 'user2')
如果你有类似上述的东西,和例如,你想知道的不是USER1相关的所有帖子(这将是POST2)。假设记录ID为用户1是#12:0。
您可以:
select from Post where #12:0 not in out('Posted')
// or
select expand(in('Posted')) from (select from User where @rid not in [#12:0])
输出:
UPDATE
您也可以使用用户的名称,而不是它的@rid:
select * from Post where $record_id.rid[0] not in out('Posted')
let $record_id = (select @rid from User where name = 'user1')
但要注意的是,让子句为每后执行一次(在这种情况下,3次)。这意味着当你有很多帖子时它不会很有效率。
在第一个例子中:我怎样才能做到这一点,但我没有@rid,我有用户的名字来检查? –
看到我上面的更新。 – vitorenesduarte