You can join a collection onto itself, something like this:

var insertData = [];

for (var x=0; x<100;x++ ){
    var palletNumber = 'P' + Math.floor(Math.random() * 10000);
    for (var y=0;y<1000 ; y++ ){
        insertData.push({
            PalletNumber: palletNumber,
            SerialNumber: y
        })
    } 
        
}

db.getCollection("Demo").insertMany(insertData)


db.getCollection("Demo").aggregate([
{
    $match:{
        'PalletNumber':{$in:['P3072']}
    }
},
{
    $group:{
        _id:'$PalletNumber'
    }
},
{
    $lookup:{
        from:'Demo',
        let:{
            pallet_palletID:'$_id'
        },
        pipeline:[
            {
                $match:{
                    $expr:{
                        $eq:[
                            '$$pallet_palletID',
                            '$PalletNumber'
                        ]
                    }
                }
            },
            {
                $limit:50
            }
        ],
        as:'lookuips'
    }
}
])


2 Likes