Mongodb 获取项目的Mongoose查询花费了很多时间

Mongodb 获取项目的Mongoose查询花费了很多时间,mongodb,mongoose,optimization,mongodb-query,query-optimization,Mongodb,Mongoose,Optimization,Mongodb Query,Query Optimization,我想使用这些查询参数从数据库中获取项目列表,但获得响应几乎需要10-15秒,在项目模型中总共有500条记录 目的:如果存在req.query.locality,且如果req.query.locality==伊斯兰堡或拉瓦尔品第,则获取价格大于等于100且小于等于1000的所有项目,因为拉瓦尔品第和伊斯兰堡是两个城市 let query = { $and: [{ price: { $gte: 100} }, { price: { $lte: 1000} }] }; if (req.query.

我想使用这些查询参数从数据库中获取项目列表,但获得响应几乎需要10-15秒,在项目模型中总共有500条记录 目的:如果存在req.query.locality,且如果req.query.locality==伊斯兰堡或拉瓦尔品第,则获取价格大于等于100且小于等于1000的所有项目,因为拉瓦尔品第和伊斯兰堡是两个城市

let query = {
  $and: [{ price: { $gte: 100} }, { price: { $lte: 1000} }]
};
if (req.query.locality) {
  if (
    req.query.locality == "Islamabad" ||
    req.query.locality == "Rawalpindi"
  )
    query.city = { $in: ["Islamabad", "Rawalpindi"] };
  else query.city = req.query.locality;
}
const items = await Item.find(query).sort({ _id: -1 });
我还为这两个文件建立了索引,但api响应仍然需要很多时间

ItemSchema.index({ city: 1, price: 1 });
const Item = mongoose.model("items", ItemSchema);
查询计划器执行统计信息

    {
  queryPlanner: {
    plannerVersion: 1,
    namespace: 'bakra-online.items',
    indexFilterSet: false,
    parsedQuery: [Object],
    winningPlan: [Object],
    rejectedPlans: [Array]
  },
  executionStats: {
    executionSuccess: true,
    nReturned: 155,
    executionTimeMillis: 1,
    totalKeysExamined: 155,
    totalDocsExamined: 155,
    executionStages: [Object],
    allPlansExecution: [Array]
  },
  serverInfo: {
    host: 'ip-.......',
    port: 27017,
    version: '3.6.3',
  },
  ok: 1
}

获取具有执行统计信息的查询计划,添加到问题。更新了问题我看不到查询计划或执行统计信息。完成sir。。抱歉,我不理解表示您的查询在1毫秒内执行的问题。获取具有执行统计信息的查询计划,添加到问题中。更新了问题我看不到查询计划或执行统计信息。完成先生。。对不起,我不明白这个问题,它说你的查询在1毫秒内执行。