我试图使用OrientDb并尝试一些测试查询,以了解使用图形数据库的语法和功能。特别是,我很难找到一个公共顶点,该公共顶点满足与两个其他不相关的顶点的两个独立关系。

例如,

假设我有一个具有属性名称的人员顶点,一个具有模型的汽车顶点以及一个具有以下边缘依赖性的属性zip的位置顶点

人---拥有->汽车

人---生活->位置

我试图找到拥有特定汽车模型并以特定拉链居住的所有Person顶点。

我不确定自己的努力中到底缺少什么,但是任何帮助将不胜感激。
谢谢

最佳答案

让我们假设这个领域模型:

Car <--- Owns ---|   Person   |--- Lives ---> Location
*   <--- Owns ---|1          *|--- Lives ---> 1


所有拥有特定汽车型号的人:

select expand(in('Owns')) from Car where model = 'Volvo'


所有居住在特定邮编中的人:

select expand(in('Lives')) from Location where zip = '10770'


让我们结合以上内容,获得拥有特定汽车模型并居住在特定邮编上的所有人员:

select from (
    select expand(in('Owns')) from Car where model = 'Volvo'
) where out('Lives') contains (zip='10770')


次要:


函数expand()转换结果集,以使您获得的不仅仅是打印输出中的记录ID。
Owns / Lives传递给in / out函数可确保仅遍历类类型Owns / Lives的边。

10-08 02:54