ArangoDB中多索引的使用
具有以下结构的文件:ArangoDB中多索引的使用,arangodb,Arangodb,具有以下结构的文件: { path: String, enabled: Long, disabled: null || Long, // other fields... } 我想通过路径前缀和一些数字与文档时间戳之间的数字关系来查找文档:(伪代码) 从条目中选择e 哪里 e、 路径以“somePrefix”开头 和e.enabledArangoDB可以在同一个集合上使用多个索引,如果过滤条件与逻辑or相结合,并且索引满足or条件 在查询中,有三个条件与逻辑and组合,逻辑and
{
path: String,
enabled: Long,
disabled: null || Long,
// other fields...
}
我想通过路径前缀和一些数字与文档时间戳之间的数字关系来查找文档:(伪代码)
从条目中选择e
哪里
e、 路径以“somePrefix”开头
和e.enabledArangoDB可以在同一个集合上使用多个索引,如果过滤条件与逻辑or相结合,并且索引满足or条件
在查询中,有三个条件与逻辑and组合,逻辑and包含or
AQL中没有以
谓词开头的,但是您可以使用前缀边界构造的范围查询:e.path>=@lower&&e.path<@upper
。对于“somePrefix”
的搜索值,边界将转换为@上限为“somePrefix”,而@下限为“somePrefix”`(最后一个字符的搜索值增加1)
在路径上创建skiplist索引将使查询使用该索引
包括启用的搜索条件
,到目前为止的组合条件是e.path>=@lower&&e.path<@upper&&e.enabled非常感谢您提供如此详细的答案!我想我会稍微修改一下这个模式,这样也许我可以想出更方便的方法。
SELECT e FROM entries
WHERE
e.path STARTS WITH "somePrefix"
AND e.enabled <= timestamp
AND (
e.disabled == null
OR timestamp < e.disabled
)