Orientdb SQL 查询以检查边缘属性

Orientdb SQL query to check edge properties

我有一个图形数据库,其中包含三种简单的顶点类型:用户、设备和传感器。关系为,

Edges: UserHasDevices, DeviceHasSensors

每条边都有一个 属性 名称 "isDeleted"。 删除Vertex时,我并没有将其永久删除,而是将Edge的"isDeleted" 属性设置为"true"。请让我知道如何查询属于特定用户的已删除传感器列表和/或已删除设备列表,由用户 ID 标识。

要按边过滤 属性,您可以使用 outE('edgeName') 并将您的条件放在某些括号中。根据我的理解,这应该是可行的:

select expand(outE('UserHasDevices')[isDeleted = true].inV()) from #13:12

在另一个 question 中,提问者说它不起作用。

我找到了另一种方法来做到这一点。您也可以从边缘扩展。这看起来像这样:

select expand(in) from UserHasDevices where isDeleted = true and out = #13:12

但我不认为在边缘性能方面存储 属性 是最好的选择。最好的办法是让另一条边包含 "isDeleted" 个顶点。它会更简单,并且可以让您拥有更短的查询执行时间。这将消除按边缘 属性.

过滤的需要