首页 > 解决方案 > OrientDB 图形数据库 - 基于连接边设置字段内容

问题描述

我正在尝试在 OrientDB 中创建一个图形数据库,用于存储有关视频游戏的一些信息。我希望根据游戏顶点与其他顶点的关系(边)填充“游戏”顶点上的一些字段。

目前我有3种顶点:

  1. 游戏

  2. 平台

  3. 公司

为了将这 3 个顶点类相互关联,我有 2 种边:

  1. 可用_开启

  2. 由开发

例如: “游戏”(顶点)是“Developed_By”(边缘)“公司”(顶点)

或者

例如: “游戏”(顶点)是“Avaialble_On”(边缘)“平台”(顶点)

“游戏”顶点有四个字段:

  1. 名称(字符串)

  2. 发布日期(字符串)

  3. 开发人员(链接列表?)

  4. 平台(链接列表?)

“游戏”顶点上的“名称”和“发布日期”是我手动设置的简单字符串。但是,我希望根据“游戏”顶点与“平台”和“公司”顶点的关系来设置“开发者”和“平台”字段。

例如:如果“游戏”顶点与任何“公司”顶点有任何传出关系“Developed_By”,则将这些“公司”顶点的“名称”字段列为“游戏”顶点的“开发者”字段的内容。

我发现我可以为游戏顶点类设置属性并添加“LINKLIST”作为类型,这允许我将属性与 Linked_Class 相关联(例如:“公司”)。

不幸的是,将此 LinkList 属性添加到“游戏”顶点似乎没有做任何事情(据我所知);查询“Game” Vertex 不会显示“devs”或“plats”字段,尽管它们出现在 Schema 中。

目前,如果我提交此查询:

SELECT FROM Game WHERE name='Myst Masterpiece Edition'

我收到了 Game Vertex,但似乎根本没有出现“devs”和“plats”LinkList 属性。

我不完全确定从这里去哪里;非常感谢任何见解。

标签: databaselinked-listorientdbgraph-databases

解决方案


为了能够使用 Linklist,您应该对其进行赋值。

create class Game extends V
create property Game.name string
create property Game.releaseDate string
create property Game.devs LINKLIST
create property Game.plats LINKLIST

create class Company extends V
create property Company.name string


insert into Company(name) values ("Ordilogic System")                         #26:0
insert into Game(name, releaseDate) values ("Unreal"), ("1998-05-22")         #17:0
update #17:0 set devs = #26:0


select from Game where name = "Unreal"

在此处输入图像描述

查看开发者姓名:

select devs.name as devs, releaseDate, name, out() as Developed_By from Game where name = "Unreal"

推荐阅读