理解 orient-db 逻辑
Understand orient-db logic
我是 OrientDB/grahps 的新手,我想清楚地理解它的逻辑。
假设有顶点电影 1:n 具有 SortOf 边的流派。我想知道其他类型的电影 'Comedy'.
阅读文档后我认为它应该是这样的:
SELECT expand(in('SortOf').out('SortOf')[name<>'Comedy'])
FROM Genre WHERE name = 'Comedy'`
它returns 0条记录。
如果我删除 <>
我会得到所有列表,甚至可以按 =
:
过滤
SELECT expand(set(in('SortOf').out('SortOf')[name='Drama']))
FROM Genre WHERE name='Comedy'
Returns 1 条记录。
现在我有以下查询的结果:
SELECT FROM (SELECT expand(set(in('SortOf').out('SortOf')))
FROM Genre WHERE name = 'Comedy')
WHERE name NOT LIKE 'Comedy'`
同样,如果我用 name!='Comedy'
代替 LIKE
,它会 returns 0 条记录。
这个查询的正确方法是什么?我应该把 count
放在哪里才能看到每个类型有多少部电影?
更新
我已将 !=
替换为 <>
,因此有效查询为:
SELECT FROM (SELECT expand(set(in('SortOf').out('SortOf')))
FROM Genre WHERE name='Comedy')
WHERE name<>'Comedy'`
但第一个查询仍然无效。我错过了什么?否则。
您要查找的运算符是<>
有关其他运算符,请参阅 this。
更新 你的情况:
create class Movie extends V
create class Genre extends V
create class SortOf extends E
create vertex Movie set name = 'm1'
create vertex Genre set name = 'Comedy'
create vertex Genre set name = 'Drama'
create edge SortOf from (select from Movie where name = 'm1') to (select from Genre where name = 'Comedy')
create edge SortOf from (select from Movie where name = 'm1') to (select from Genre where name = 'Drama')
select from (
select expand(in('SortOf').out('SortOf')) from Genre where name = 'Comedy'
) where name <> 'Comedy'
我是 OrientDB/grahps 的新手,我想清楚地理解它的逻辑。
假设有顶点电影 1:n 具有 SortOf 边的流派。我想知道其他类型的电影 'Comedy'.
阅读文档后我认为它应该是这样的:
SELECT expand(in('SortOf').out('SortOf')[name<>'Comedy'])
FROM Genre WHERE name = 'Comedy'`
它returns 0条记录。
如果我删除 <>
我会得到所有列表,甚至可以按 =
:
SELECT expand(set(in('SortOf').out('SortOf')[name='Drama']))
FROM Genre WHERE name='Comedy'
Returns 1 条记录。 现在我有以下查询的结果:
SELECT FROM (SELECT expand(set(in('SortOf').out('SortOf')))
FROM Genre WHERE name = 'Comedy')
WHERE name NOT LIKE 'Comedy'`
同样,如果我用 name!='Comedy'
代替 LIKE
,它会 returns 0 条记录。
这个查询的正确方法是什么?我应该把 count
放在哪里才能看到每个类型有多少部电影?
更新
我已将 !=
替换为 <>
,因此有效查询为:
SELECT FROM (SELECT expand(set(in('SortOf').out('SortOf')))
FROM Genre WHERE name='Comedy')
WHERE name<>'Comedy'`
但第一个查询仍然无效。我错过了什么?否则。
您要查找的运算符是<>
有关其他运算符,请参阅 this。
更新 你的情况:
create class Movie extends V
create class Genre extends V
create class SortOf extends E
create vertex Movie set name = 'm1'
create vertex Genre set name = 'Comedy'
create vertex Genre set name = 'Drama'
create edge SortOf from (select from Movie where name = 'm1') to (select from Genre where name = 'Comedy')
create edge SortOf from (select from Movie where name = 'm1') to (select from Genre where name = 'Drama')
select from (
select expand(in('SortOf').out('SortOf')) from Genre where name = 'Comedy'
) where name <> 'Comedy'