同时使用排序和查询时,在MongoDB中使用MapReduce索引
为了获得最佳性能,如果您同时向提供同时使用排序和查询时,在MongoDB中使用MapReduce索引,mongodb,mapreduce,mongodb-indexes,Mongodb,Mapreduce,Mongodb Indexes,为了获得最佳性能,如果您同时向提供排序和查询,您应该: 一个索引包含排序中使用的字段,然后是查询中使用的字段 一个索引包含查询中使用的字段,然后是排序中使用的字段 两个独立的索引 例如,文档包含字段A、B、C、D。 Map Reduce在字段a上使用排序,在字段B、C上使用查询 以下哪项指标更可取: {A:1,B:1,C:1} {B:1,C:1,A:1} {A:1},{B:1,C:1} 这有文件记录吗?(同时使用排序和查询时,按地图减少索引使用。)您能告诉我们一个尝试吗?或者至少是一些源数据
排序
和查询
,您应该:
例如,文档包含字段
A、B、C、D
。
Map Reduce在字段a
上使用排序,在字段B、C
上使用查询
以下哪项指标更可取:
{A:1,B:1,C:1}
{B:1,C:1,A:1}
{A:1}
,{B:1,C:1}
这有文件记录吗?(同时使用排序和查询时,按地图减少索引使用。)您能告诉我们一个尝试吗?或者至少是一些源数据和一个预期结果?@NeilLunn这个问题与MongoDB如何工作有关。这不是一个具体的案例。我知道如何使用map reduce以及如何创建索引,但是,考虑到为大型集合生成索引所需的时间,我宁愿提前创建正确的索引,而不是猜测然后检查它是否是正确的索引。假设
B
和C
上的条件是相等的条件,那么2是最好的,效果非常好。您可以在shell中轻松测试这一点,只需使用各种索引尝试db.collection.find(query).sort(sort).explain()
。另请参阅手册。@wdberkeley如果您将此作为答案添加(使用此链接),我将选择它。