Mongodb 获取项目的Mongoose查询花费了很多时间
我想使用这些查询参数从数据库中获取项目列表,但获得响应几乎需要10-15秒,在项目模型中总共有500条记录 目的:如果存在req.query.locality,且如果req.query.locality==伊斯兰堡或拉瓦尔品第,则获取价格大于等于100且小于等于1000的所有项目,因为拉瓦尔品第和伊斯兰堡是两个城市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.
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毫秒内执行。