【问题标题】:Orientdb SQL query to check edge properties用于检查边缘属性的 Orientdb SQL 查询
【发布时间】:2015-07-13 21:20:09
【问题描述】:
我有一个图形数据库,其中包含三种简单的顶点类型:用户、设备和传感器。关系是这样的,
边缘:UserHasDevices、DeviceHasSensors
每条边都有一个属性名称“isDeleted”。
删除顶点时,我不会将其永久删除,而是将 Edge 的“isDeleted”属性设置为“true”。请告诉我如何查询属于特定用户的已删除传感器列表和/或已删除设备列表,由用户 ID 标识。
【问题讨论】:
标签:
sql
database
orientdb
graph-databases
nosql
【解决方案1】:
要按边属性过滤,您可以使用 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”顶点的边。它会更简单,并且可以让您有更短的查询执行时间。这将消除按边缘属性过滤的需要。