我试图使用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
的边。