Mr. Mad
Mr. Mad

Reputation: 1238

The Mongo query taking too much time to respond

I am working with node - js and mongoDB , all the queries are ok and working fine but at some point I am using a query used 4 lookups , also applied the matches based on those lookups , and applied the pagination+ sorting in the same query. But the main issue I am facing is the query taking time around 10-20 seconds to fetch the data from the database , which is really too long time period.

Here is the code snippet for the same

var products = await db.collection('catalog_products')
    .aggregate([
    { $match: { categories: cat_id.toString(), status:1, verification_status:1}},
    { $lookup: { from: 'catalog_product_meta', localField: '_id', foreignField: 'product_id', as: 'meta' } }, { $unwind:"$meta" },
    { $lookup: { from: 'catalog_product_attributes', localField: '_id', foreignField: 'product_id', as: 'attributes' } }, { $unwind:"$attributes" },
    {$match :  {$and : [ { $or : [ { "attributes.attribute_value" : ObjectId("60f5626681cc91c83a34f6c8") }, { "attributes.attribute_value" : ObjectId("617285baaad0c6b9d269a6c5") } ] }, { $or : [ { "attributes.attribute_value" : ObjectId("61600701dc103aaf206165c3") } ] } ]}},
    { $lookup: { from: 'catalog_product_prices', localField: '_id', foreignField: 'product_id', as: 'prices' } }, { $unwind:"$prices" },
    { $match : {$and:{ 'prices.regular_price': { '$gte': 3109, '$lte': 15406 } }}},
    { $sort: sort},
    { $project: {
        "_id"               : 1,
        "name"              : "$meta.name",
        "url_key"           : 1,
        "regular_price"     : "$prices.regular_price",
        "sale_price"        : "$prices.sale_price",
    } },
    ],{ "allowDiskUse" : true }).skip(36).limit(36).toArray();

Upvotes: 0

Views: 344

Answers (0)

Related Questions