Mongodb aggregate lookup group большие данные медленно - PullRequest
0 голосов
/ 10 июля 2020

Здравствуйте, я новичок в Mongodb, и у меня проблема с агрегированным поисковым запросом.

dbstock.aggregate([
{ 
    $match: {
        "stockLocation": "stockId",
        "companyId": "companyId"
    }
},
{
    $lookup: {
        from: "items",
        let: { item: "$stockItemCode", company: "$companyId" },
        pipeline: [
            { $match:
                { $expr:
                    { $and:
                        [
                            { $eq: [ "$itemCode",  "$$item" ] },
                            { $eq: [ "$companyId", "$$company" ] }
                        ]
                    }
                }
            },
            { $project: { _id: 0, itemName: 1, companyId: 1 } }
        ],
        as: "item"
    }
},
{
    $group: {
        _id: "$stockItemCode",
        itemName: { $last: "$itemName" },
        companyId: { $last: "$companyId" },
        stockLocation: { $last: "$stockLocation" },
        positiveQuantity: { $sum: { $cond: [{ $gt: ['$quantity', 0] }, "$quantity", 0] } },
        negativeQuantity: { $sum: { $cond: [{ $lt: ['$quantity', 0] }, "$quantity", 0] } },
        item: { $last: "$item" }
    }
},
], {
   allowDiskUse: true
})

Запрос работает Хорошо без $ group, но когда я использую $ group в своем запросе, он очень медленный, иногда требуется 5, чтобы 10 минут

...