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

Mongodb 如何在结构未知的集合中搜索?,mongodb,nosql,Mongodb,Nosql,我花了几个小时阅读文档和论坛,试图找到以下问题的解决方案: 在Mongo数据库中,我收集了一些非结构化数据: {“数据”:“一些数据”,“_id”:“497ce96f395f2f052a494fd4”} {“更多数据”:“更多数据在这里”,“递归数据”:{“一些数据”:“更多数据在这里”,“id”:“497ce96f395f2f052a4323} {“more_unknown_data”:“string或偶dictionary”,“_id”:“497ce96f395f2f052a494fsd2”

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

在Mongo数据库中,我收集了一些非结构化数据:

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

{“更多数据”:“更多数据在这里”,“递归数据”:{“一些数据”:“更多数据在这里”,“id”:“497ce96f395f2f052a4323}

{“more_unknown_data”:“string或偶dictionary”,“_id”:“497ce96f395f2f052a494fsd2”}

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

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


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

如果你能找到一种方法,你仍然会面临搜索速度慢的问题,因为没有索引

我也遇到过类似的问题,解决方案是创建额外的数据库(在同一个引擎上或任何其他更适合搜索的引擎上),并用mongo键填充数据库,并将其合并到一个文本字段数据中,并在mongodb数据更新时对其进行更新


如果合适的话,你也可以尝试这样做……至少搜索速度非常快。(我使用postgresql作为搜索后端)

如果你能找到一种方法,你仍然会面临搜索速度慢的问题,因为没有索引

我也遇到过类似的问题,解决方案是创建额外的数据库(在同一个引擎上或任何其他更适合搜索的引擎上),并用mongo键填充数据库,并将其合并到一个文本字段数据中,并在mongodb数据更新时对其进行更新


如果合适的话,您也可以尝试这样做……至少搜索速度非常快。(我使用postgresql作为搜索后端)

只需在每个对象中添加一个数组,并用您希望能够搜索的字符串填充它。通常我会将这些值小写,以便于不区分大小写的搜索

e、 g.标签:[“字符串1的副本”、“字符串2的副本”,…]

您可以扩展此技术,为每个元素的每个单词编制索引。有时我还会添加前面带有标识符的字段,例如“流派:摇滚”,它允许在特定字段中搜索值(仔细选择“:”字符)


在此数组上添加索引,现在您可以搜索集合中任何文档中的任何单词或短语,还可以搜索“流派:摇滚乐”在特定字段中搜索该值。

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

e、 g.标签:[“字符串1的副本”、“字符串2的副本”,…]

您可以扩展此技术,为每个元素的每个单词编制索引。有时我还会添加前面带有标识符的字段,例如“流派:摇滚”,它允许在特定字段中搜索值(仔细选择“:”字符)


在此数组上添加索引,现在您可以搜索集合中任何文档中的任何单词或短语,还可以搜索“流派:摇滚乐”在特定字段中搜索该值。

您应该知道这种方法,因为最大索引值为800字节。我不能确切地说它在数组元素上分离时是否不计数。因此,最好在投入生产之前检查此问题。如果您最终将进行此检查,请注释掉…版本2增加索引键大小为1024。每个数组元素都已编制索引。但是,文档中确实警告“数据库会为数组中的每个项创建索引项。请注意,具有许多元素(数百或数千)的数组可能会使插入非常昂贵。”如何为Spring Data Mongo编写存储库方法?您应该知道这种方法,因为最大索引值为800字节。我不能确切地说它在数组元素上分离时是否不计数。因此,最好在投入生产之前检查此问题。如果您最终将进行此类检查,请注释掉…版本2将索引键大小增加到1024。每个数组元素都已编制索引。但是,文档中确实警告“数据库为数组中的每个项创建索引项。请注意,具有许多元素(数百或数千)的数组可能会使插入非常昂贵。”如何为Spring Data Mongo编写存储库方法?