首页 > 解决方案 > MongoDB 通配符索引 - 如何用索引覆盖投影

问题描述

我在 mongodb 上有一个用于不同工作流模板的动态模式。每个工作流模板都有关联的数据属性,这些属性正常存储<key,value>

{
  _id : "1"
  data : {
    team_id : "ABC",
    template_id : "retail_sales",
    recorded_at : "",
    billing_state : "KA",
    pin_code : "50001"
  }
}


{
  _id : 2
  data : {
    team_id : "ABC",
    template_id : "simple_crm",
    recorded_at : "",
    status : "NEW",
    loan_amount : 10000
  }
}

我知道在 4.2 中有一个通配符索引,我想将其用于聚合查询。已创建完整的文档通配符索引,如下所示


{ 
  "$data.**" : 1
}

在执行查询时,我可以看到使用了索引。

db.getCollection("view_status_dashboard").aggregate(
[
    {
        "$match" : {
            "data.team_id" : "ABC",
            "data.template_id" : "retail_sales"
        }
      }
    },
   
    {
        $project : {
            _id : 0,
            data: 1
        }
    }
])


然而,投影正在进行“FETCH”调用,这会增加内存。

在此处输入图像描述

如何确保我的投影也包含在 mongo 通配符索引下,从而限制内存使用?

标签: mongodb-queryaggregation-frameworkmongodb-indexes

解决方案


推荐阅读