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" 个顶点。它会更简单,并且可以让您拥有更短的查询执行时间。这将消除按边缘 属性.
过滤的需要
我有一个图形数据库,其中包含三种简单的顶点类型:用户、设备和传感器。关系为,
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" 个顶点。它会更简单,并且可以让您拥有更短的查询执行时间。这将消除按边缘 属性.
过滤的需要