0

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

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

搜索“someB”时,我需要能够获得第二个文档

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

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

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

2 回答 2

3

你将如何查询未知结构?您可能采用无模式方法太过分了。

您可能想自己创建和维护反向索引。也就是说,在单独的集合存储文档中,如下所示:

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

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

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

于 2012-05-10T21:33:37.337 回答
0

您不能将正则表达式应用于架构字段。您始终必须指定要查询的文档/子文档的完整虚线名称。否则,您需要将要搜索的内容聚合到可以查询的知名字段中。但是 MongoDB 并不是查找 all-my-crap-stored-within-my-horrible-crap-data-schema 的解决方案。

于 2012-05-11T04:08:34.207 回答