sql >> Database teknologi >  >> NoSQL >> MongoDB

$push brugte for meget hukommelse og kan ikke spildes til disken. Hukommelsesgrænse:104857600 bytes

Så efter så meget kamp, ​​her er, hvad jeg gjorde for at løse mit problem. Først blev forstået, at jeg ikke kan skubbe dataene ind i et array uden at begrænse det. Så jeg brugte $limit og $skip , før du grupperer dataene i pipelinen.(Dette bevarer også pagineringen for min forespørgsel). Men problemet var at fastholde det samlede antal registreringer, da det gik tabt på grund af grænsen før gruppering. Så den løsning, jeg fandt ud af, er at bruge $facet , som hjælper mig med at implementere to pipelines inden for den samme aggregeringspipeline.

db.prdfam.aggregate([{
$facet: {
"counts":[
{ '$match': {} },
{ '$lookup': { from: 'pt', localField: 'pfId', foreignField: 'pfId', as: 'pt' } },
{ '$unwind': '$pt' }, { '$match': {} }, 
{ '$lookup': { from: 'prds', localField: 'pt.ptId', foreignField: 'ptId', as: 'prd' } },
{ '$unwind': '$prd' }, { '$match': {} }, 
{ '$lookup': { from: 'del', localField: 'prd.prdId', foreignField: 'prdId', as: 'delivery' } }, 
{ '$unwind': '$delivery' }, { '$match': { 'delivery.currentDelivery': { '$ne': 'OBSOLETE' }, 
'$or': [ { 'prd.prdName': { '$regex': /^.*world.*/i } },
{ 'delivery.rInfo.dataFormat': { '$regex': /^.*world.*/i } },
{ 'delivery.dType': { '$regex': /^.*world.*/i } }, 
{ 'delivery.dId': 'WORLD' }, { 'delivery.UserId': 'WORLD' } ] } }, 
{ '$group': { _id: null, count: { '$sum': 1 } } }
],
"results":[
//same lookup & match conditions as in above element 
{ '$project': { //fields to project } }, 
{ '$sort': { updatedAt: -1 } }, {$skip: 0},{ $limit : 10 },
{ '$group': { _id: null, results: { '$push': '$$ROOT' } } },
{ '$project': { results: 1 } }
]
}
}], 
{ allowDiskUse: true })

Håber dette vil hjælpe andre. Skål :)




  1. Sådan gemmer og henter du session fra Redis

  2. Timeout-fejl ved forbindelse til CosmosDB med MongoDB API

  3. Mongooses standard løftebibliotek er forældet i MEAN stack

  4. MongoDB/NoSQL:Bevar dokumentændringshistorik