如何在未知结构的集合中搜索?

Mar*_*sev 1 mongodb nosql

我花了几个小时阅读文档和论坛,试图找到解决以下问题的方法:

在 A Mongo 数据库中,我有一个包含一些非结构化数据的集合:

{“数据”:“一些数据”,“_id”:“497ce96f395f2f052a494fd4”}

{“more_data”:“更多数据”,“recursive_data”:{“some_data”:“更多数据”,“_id”:“497ce96f395f2f052a4323”}

{“more_unknown_data”:“字符串甚至字典”,“_id”:“497ce96f395f2f052a494fsd2”}

...

问题是这个集合中的元素没有预定义的结构,它们可以是无限的级别。

我的目标是创建一个查询,搜索整个集合并找到与正则表达式匹配的所有元素(在键和值中)。

例如,如果我有一个正则表达式: '^even more' - 它应该返回结构中某处具有字符串“甚至更多”的所有元素。在这种情况下 - 这将是第二个。

Ian*_*cer 5

只需向每个对象添加一个数组,并用您希望能够搜索的字符串填充它。通常我会小写这些值以使不区分大小写的搜索变得容易。

例如标签:[“字符串 1 的副本”,“字符串 2 的副本”,...]

您可以扩展此技术以索引每个元素的每个单词。有时,我还会在字段前面添加一个标识符,例如“genre:rock”,它允许在特定字段中搜索值(小心选择“:”字符)。

在此数组上添加索引,现在您可以在集合中的任何文档中搜索任何单词或短语,并且您可以搜索“genre:rock”以在特定字段中搜索该值。