【发布时间】:2022-08-19 03:13:45
【问题描述】:
我正在评估要使用 ArangoDB 来代替 OrientDB。我的数据集本质上是一个不必要连接的树的森林(家谱)。
因为数据集是一个有向无环图(一棵树),所以沿着树上走寻找东西总是比沿着树下走更有效。
在 OrientDB 的早期版本中,在他们为我删除这个关键特性之前,我能够执行以下查询:
SELECT FROM Person WHERE haircolor = \"Red\" and in traverse(0, -1, \"in\") (birth_country = \"Ireland\")
由于 haircolor 是一个索引字段,因此获取所有这些顶点是有效的。神奇之处在于 WHERE 子句中的遍历运算符,如果它找到来自爱尔兰的任何祖先,它会停止遍历并立即返回 TRUE。
是的,你可以把它转过来,寻找所有来自爱尔兰的人,然后向下走,寻找那些讨厌的红发女郎,将它们归还,但它的效率要低得多,因为你必须评估每条向下的路径,这可能会呈指数级增长。
由于 OrientDB 通过删除该功能(在我看来)是在踢自己的脚,我想知道是否有一个 ArangoDB 查询可以在不走下树的情况下执行类似的任务。
在此先感谢您的帮助!
标签: orientdb traversal arangodb