1

我有数百万条记录的庞大集合,将有 4 个字段用于获取数据,比如说f1, f2, f3用于过滤和f4数据排序。将有 3 种类型的查询:

1) filter by f1 AND f2, and sort by f4
2) filter by f1 AND f2 AND f3, and sort by f4
3) filter by f1 AND f2 AND few additional fields, and sort by f4

所以排序总是按f4。主要使用前两种类型的查询。案例 3 中的其他字段可能是集合中的任何字段(搜索功能),因此我不会将它们用于索引。

我的建议是唯一的组合键(f1, f2, f3, f4)可能是最好的解决方案,但由于我几乎没有 mongoDb 的经验,所以我决定问你们。

4

1 回答 1

2

从前两个查询{f1:1,f2:1,f4:1}开始{f1:1,f2:1,f3:1,f4:1}。您始终可以使用.find(...).sort({f4:1}).explain(), 来评估给定查询的所选索引的适当性。此外,您可能会发现您对 query 的某些f1 AND f2 AND few additional fields查询可能会受益于其他索引,例如{f1:1,f2:1,addField1:1,f4:1}.

另外,请注意您是否使用f4:1f4:-1,这取决于您是否始终按f4升序或降序排序。

于 2012-09-24T19:55:54.427 回答