[英]Orientdb SQL query to check edge properties
我有一个具有三个简单顶点类型(用户,设备和传感器)的Graph数据库。 关系是这样的,
边缘:UserHasDevices,DeviceHasSensors
每个边都有一个属性名称“ isDeleted”。 删除顶点时,我不会使它永久删除,而是将Edge的“ isDeleted”属性设为“ true”。 请让我知道如何查询属于特定用户的,由用户ID标识的已删除传感器的列表和/或已删除设备的列表。
要按edges属性过滤,可以使用outE('edgeName')并将条件放在方括号中。 根据我的理解,这应该可以工作:
select expand(outE('UserHasDevices')[isDeleted = true].inV()) from #13:12
在另一个问题中 ,询问者说它不起作用。
我找到了另一种方法。 您也可以从边缘扩展。 看起来像这样:
select expand(in) from UserHasDevices where isDeleted = true and out = #13:12
但我认为以最佳性能存储属性不是最好的选择。 最好的做法是让另一个包含“ isDeleted”顶点的边。 这样会更简单,并且可以缩短查询执行时间。 这将消除对edge属性进行过滤的需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.