查询以搜索嵌入对象

时间:2012-05-10 21:27:48

标签: mongodb

我需要查询嵌入对象中包含的数据。问题是嵌入式对象的结构未知 例如:

{"field_1": "val_1", "embedded": {"random1": "someA" }}
{"field_1": "val_2", "embedded": {"random2": "someB" }}
{"field_1": "val_3", "embedded": {"random3": "someC" }}

我需要能够在搜索“someB”时获得第二份文件

任何想法如何在具有未知结构的嵌入式documnet中进行搜索?

对于我使用正则表达式查询的硬编码对象,

ps:

{'$regex': '.*%s.*' % search_for}

2 个答案:

答案 0 :(得分:3)

您如何查询未知结构?你可能会采用无模式方法。

您可能希望自己创建和维护反向索引。也就是说,在这样的单独的收集商店文档中:

{value: 'someB', stored_in_object:"object id here", path:'embedded.random2'}

也许全文搜索引擎可以在这里提供帮助。

或者您应该重新考虑您的架构。

答案 1 :(得分:0)

您无法将正则表达式应用于架构字段。您始终必须指定要查询的文档/子文档的完整虚线名称。否则,您需要将要搜索的内容聚合到可以查询的已知字段中。但MongoDB不是一个解决方案,可以找到我所有的垃圾 - 存储在我的恐怖垃圾数据模式中。