【发布时间】:2013-01-06 09:18:06
【问题描述】:
这个问题是关于如何使用 MongoDB 中的索引在嵌套文档中查找内容,而不必为每个单独的子级别编制索引。 我在 MongoDB 中有一个集合“测试”,基本上是这样的:
{
"_id" : ObjectId("50fdd7d71d41c82875a5b6c1"),
"othercol" : "bladiebla",
"scenario" : {
"1" : { [1,2,3] },
"2" : { [4,5,6] }
}}
场景有多个键,每个文档可以有场景的任何子集(即从无到子集到全部)。另外:场景不能是数组,因为我需要它作为 Python 中的字典。我在“场景”字段上创建了一个索引。
我的问题是我想在集合上进行选择,过滤具有一定价值的文档。所以这在功能上可以正常工作:
db.test.find({"scenario.1": {$exists: true}})
但是,它不会使用我在场景中设置的任何索引。只有当我在“scenario.1”上放置一个索引时,才会使用一个索引。但是我可以有数千个(或更多)场景(并且集合本身有 100.000 条记录),所以我不想这样做!
所以我尝试了替代方案:
db.test.find({"scenario": "1"})
这将在场景中使用索引,但不会返回结果。将场景设为数组仍然会出现相同的索引问题。
我的问题清楚了吗?谁能指点一下我如何在这里获得最佳性能?
附:我已经看到了这个:How to Create a nested index in MongoDB? 但在我的情况下这个解决方案是不可能的(由于场景的数量)
【问题讨论】:
标签: mongodb