0

我正在将 arangoDB 用于 JSON 对象具有可变结构的项目。我在想我可以创建一个视图来搜索集合并提取相关键。似乎所有文档都假设您知道感兴趣的领域在哪里,但我不知道。例如,我想创建一个带有 'foo' 字段的视图,但我不知道它可能在许多嵌套对象中的哪个位置。我的 JSON 文件/集合可能如下:

[{'foo':'bar'},
 {'nest':
       {'nesty':
           {'foo':bar}
       }
 },
 {arr:[{'blah':'blah'},{'foo':'blah'}]}, ect ]

我知道亚行有一个文本搜索引擎,但它似乎只有在数据干净的情况下才有用。理想情况下,我想要一种实际搜索文档本身以制作视图的方法。对我来说,对每条路径进行硬编码的数据和变化太多,但关键字符串“Foo”始终是一致的。理想情况下,我希望视图包含以下文档:

[{'foo':bar},{'foo':bar},{'foo':blah},etc]

所以我的问题是 1,有没有办法在 arango 中执行此类数据清理,2 如果不是,处理此类数据的主要范式是什么?我应该尝试在 arango 外面清理这个吗?

4

1 回答 1

0

视图允许您通过"includeAllFields": true在链接的顶层设置(集合键)来索引所有字段。但是,您需要在查询时指定一个属性路径,例如SEARCH doc.nest.nesty.foo == "bar". 不支持搜索任意路径,例如SEARCH doc.* == "bar".

目前也没有办法自动扁平化您的数据。如果您的数据具有固定的嵌套结构,那么您可以运行一次性 AQL 查询来执行此操作,但如果我理解正确,那么数据不是那样的。您仍然可以在客户端执行此操作,或者编写一个用户定义的 AQL 函数在服务器端执行此操作。

一个扁平化的文档{ "data": [{"foo":"bar"},{"foo":"bar"},{"foo":"blah"}]可以像一个视图的单个属性一样被索引。SEARCH doc.data.foo == "..."如果其中任何一个符合条件,将搜索所有三个字段并匹配文档。

于 2021-07-05T10:55:28.390 回答