Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同时使用排序和查询时,在MongoDB中使用MapReduce索引_Mongodb_Mapreduce_Mongodb Indexes - Fatal编程技术网

同时使用排序和查询时,在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如果您将此作为答案添加(使用此链接),我将选择它。