【问题标题】: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”顶点的边。它会更简单,并且可以让您有更短的查询执行时间。这将消除按边缘属性过滤的需要。

    【讨论】:

    • 非常感谢。这就是我一直在寻找的答案。
    猜你喜欢
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多