使用arango搜索在集合中查找JSON键并清理数据



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

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

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

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

所以我的问题是1,有没有一种方法可以在arango中执行这种数据清理,2如果没有,处理这种数据的主要范式是什么?我应该试着清理阿兰戈外面的这个吗?

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

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

{ "data": [{"foo":"bar"},{"foo":"bar"},{"foo":"blah"}]这样的展平文档可以像具有View的单个属性一样进行索引。SEARCH doc.data.foo == "..."将搜索所有三个字段,如果其中任何字段符合条件,则匹配文档。

最新更新