我需要查询嵌入对象中包含的数据。问题是嵌入式对象的结构未知 例如:
{"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}
答案 0 :(得分:3)
您如何查询未知结构?你可能会采用无模式方法。
您可能希望自己创建和维护反向索引。也就是说,在这样的单独的收集商店文档中:
{value: 'someB', stored_in_object:"object id here", path:'embedded.random2'}
也许全文搜索引擎可以在这里提供帮助。
或者您应该重新考虑您的架构。
答案 1 :(得分:0)
您无法将正则表达式应用于架构字段。您始终必须指定要查询的文档/子文档的完整虚线名称。否则,您需要将要搜索的内容聚合到可以查询的已知字段中。但MongoDB不是一个解决方案,可以找到我所有的垃圾 - 存储在我的恐怖垃圾数据模式中。