group by

PHOTO EMBED

Tue Mar 12 2024 14:39:42 GMT+0000 (Coordinated Universal Time)

Saved by @CodeWithSachin ##jupyter #aggregation #mongodb

[
    {
        $group: {
            _id: "$participantId",
            documents: { $push: "$$ROOT" },
            count: { $sum: 1 }
        }
    },
    {
        $match: {
            count: { $gt: 1 }
        }
    },
    {
        $unwind: "$documents"
    },
    {
        $match: {
            "documents.programCode": { $ne: "" }
        }
    },
    {
        $group: {
            _id: {
                participantId: "$_id",
                programCode: "$documents.programCode",
                programStartDate: "$documents.programStartDate"
            },
            baselineId: { $first: "$_id" },
            documentIds: { $push: "$documents._id" }, 
            documents: { $push: "$documents" },
            count: { $sum: 1 }
        }
    },
    {
        $match: {
            count: { $gt: 1 }
        }
    },
    {
        $project: {
            _id: 1,
            participantId: "$_id.participantId",
            programCode: "$_id.programCode",
            programStartDate: "$_id.programStartDate",
            baselineId: 1,
            documentIds: 1 
        }
    },
    {
        $lookup: {
            "from": "participant",
            "localField": "participantId",
            "foreignField": "_id",
            "as": "temp"
        }
    },
    {
        $match: {
            "temp.userStatus": { $ne: "TEST" },
            $and: [
                { "temp.email": { $nin: [/deleted/] } },
                { "temp": { $ne: null } }
            ]
        }
    },
    {
        $unwind:"$documentIds"
    }
    {
        $project: {
            _id:0
            "participantId": { $arrayElemAt: ["$temp._id", 0] },
            "email": { $arrayElemAt: ["$temp.email", 0] },
            "documentIds": 1 
        }
    }
]
content_copyCOPY

http://34.74.16.180:3000/question#eyJkYXRhc2V0X3F1ZXJ5Ijp7ImRhdGFiYXNlIjoyLCJuYXRpdmUiOnsidGVtcGxhdGUtdGFncyI6e30sInF1ZXJ5IjoiW1xyXG4gICAge1xyXG4gICAgICAgICRncm91cDoge1xyXG4gICAgICAgICAgICBfaWQ6IFwiJHBhcnRpY2lwYW50SWRcIixcclxuICAgICAgICAgICAgZG9jdW1lbnRzOiB7ICRwdXNoOiBcIiQkUk9PVFwiIH0sXHJcbiAgICAgICAgICAgIGNvdW50OiB7ICRzdW06IDEgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgJG1hdGNoOiB7XHJcbiAgICAgICAgICAgIGNvdW50OiB7ICRndDogMSB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICAkdW53aW5kOiBcIiRkb2N1bWVudHNcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICAkbWF0Y2g6IHtcclxuICAgICAgICAgICAgXCJkb2N1bWVudHMucHJvZ3JhbUNvZGVcIjogeyAkbmU6IFwiXCIgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgJGdyb3VwOiB7XHJcbiAgICAgICAgICAgIF9pZDoge1xyXG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnRJZDogXCIkX2lkXCIsXHJcbiAgICAgICAgICAgICAgICBwcm9ncmFtQ29kZTogXCIkZG9jdW1lbnRzLnByb2dyYW1Db2RlXCIsXHJcbiAgICAgICAgICAgICAgICBwcm9ncmFtU3RhcnREYXRlOiBcIiRkb2N1bWVudHMucHJvZ3JhbVN0YXJ0RGF0ZVwiXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJhc2VsaW5lSWQ6IHsgJGZpcnN0OiBcIiRfaWRcIiB9LFxyXG4gICAgICAgICAgICBkb2N1bWVudElkczogeyAkcHVzaDogXCIkZG9jdW1lbnRzLl9pZFwiIH0sIFxyXG4gICAgICAgICAgICBkb2N1bWVudHM6IHsgJHB1c2g6IFwiJGRvY3VtZW50c1wiIH0sXHJcbiAgICAgICAgICAgIGNvdW50OiB7ICRzdW06IDEgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgJG1hdGNoOiB7XHJcbiAgICAgICAgICAgIGNvdW50OiB7ICRndDogMSB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICAkcHJvamVjdDoge1xyXG4gICAgICAgICAgICBfaWQ6IDEsXHJcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SWQ6IFwiJF9pZC5wYXJ0aWNpcGFudElkXCIsXHJcbiAgICAgICAgICAgIHByb2dyYW1Db2RlOiBcIiRfaWQucHJvZ3JhbUNvZGVcIixcclxuICAgICAgICAgICAgcHJvZ3JhbVN0YXJ0RGF0ZTogXCIkX2lkLnByb2dyYW1TdGFydERhdGVcIixcclxuICAgICAgICAgICAgYmFzZWxpbmVJZDogMSxcclxuICAgICAgICAgICAgZG9jdW1lbnRJZHM6IDEgXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICAkbG9va3VwOiB7XHJcbiAgICAgICAgICAgIFwiZnJvbVwiOiBcInBhcnRpY2lwYW50XCIsXHJcbiAgICAgICAgICAgIFwibG9jYWxGaWVsZFwiOiBcInBhcnRpY2lwYW50SWRcIixcclxuICAgICAgICAgICAgXCJmb3JlaWduRmllbGRcIjogXCJfaWRcIixcclxuICAgICAgICAgICAgXCJhc1wiOiBcInRlbXBcIlxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgJG1hdGNoOiB7XHJcbiAgICAgICAgICAgIFwidGVtcC51c2VyU3RhdHVzXCI6IHsgJG5lOiBcIlRFU1RcIiB9LFxyXG4gICAgICAgICAgICAkYW5kOiBbXHJcbiAgICAgICAgICAgICAgICB7IFwidGVtcC5lbWFpbFwiOiB7ICRuaW46IFsvZGVsZXRlZC9dIH0gfSxcclxuICAgICAgICAgICAgICAgIHsgXCJ0ZW1wXCI6IHsgJG5lOiBudWxsIH0gfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICAkdW53aW5kOlwiJGRvY3VtZW50SWRzXCJcclxuICAgIH1cclxuICAgIHtcclxuICAgICAgICAkcHJvamVjdDoge1xyXG4gICAgICAgICAgICBfaWQ6MFxyXG4gICAgICAgICAgICBcInBhcnRpY2lwYW50SWRcIjogeyAkYXJyYXlFbGVtQXQ6IFtcIiR0ZW1wLl9pZFwiLCAwXSB9LFxyXG4gICAgICAgICAgICBcImVtYWlsXCI6IHsgJGFycmF5RWxlbUF0OiBbXCIkdGVtcC5lbWFpbFwiLCAwXSB9LFxyXG4gICAgICAgICAgICBcImRvY3VtZW50SWRzXCI6IDEgXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5dXHJcbiIsImNvbGxlY3Rpb24iOiJwYXJ0aWNpcGFudEJhc2VsaW5lQW5kRm9sbG93dXBEYXRhIn0sInR5cGUiOiJuYXRpdmUifSwiZGlzcGxheSI6InRhYmxlIiwidmlzdWFsaXphdGlvbl9zZXR0aW5ncyI6e319