0
votes

correspondance où la matrice contient la valeur

var user_id = req.body.user_id;

  TeamAttendance.aggregate(
    [
    {$match : { allMembers : user_id },
    {$group : {
      _id : "$team_id"
    }}
    ]).exec()

0 commentaires

3 Réponses :


1
votes

dans l'agrégat Essayez et assurez-vous que UserID est ObjectId, je pense que le numéro principal de votre pipeline d'agrégat peut-être que UserID est dans la chaîne, mais que l'agrégat nécessite un identifiant d'objet Mongoose pour travailler ci-dessous:

let mongoose = require('mongoose');
var user_id = mongoose.Types.ObjectId(req.body.user_id);

  TeamAttendance.aggregate(
    [
    {$match : { allMembers : {$in:[user_id]} },
    {$group : {
      _id : "$team_id"
    }}
    ]).exec()


1 commentaires

Merci @sushant. Le problème était que je n'ai pas converti l'utilisateur_id en objet. mongoose.types.objectid (req.body.user_id) --- Cela m'a sauvé.



0
votes
 schedules.aggregate([
            {
                "$match":
                {
                    "offdeleveryDate.startOffDate": { $lte: new Date(start) },
                    "offdeleveryDate.endOffDate": { $gte: new Date(end) },

                }
        }, {
            "$match": query
        }, {
            "$lookup": {
                "from": "users",
                "localField": "userId",
                "foreignField": "_id",
                "as": "userInfo"

            }
        },
        {
            "$unwind": {
                "path": "$userInfo",
                "preserveNullAndEmptyArrays": true
            }
        },
        {
            "$lookup": {
                "from": "products",
                "localField": "productId",
                "foreignField": "_id",
                "as": "productInfo"

            }
        },
        {
            "$unwind": {
                "path": "$productInfo",
                "preserveNullAndEmptyArrays": true
            }
        },
        {
            "$lookup": {
                "from": "services",
                "localField": "serviceTypeId",
                "foreignField": "_id",
                "as": "serviceInfo"

            }
        },
        {
            "$unwind": {
                "path": "$serviceInfo",
                "preserveNullAndEmptyArrays": true
            }
        },
        {
            "$project": {
                "customerName": 1,
                "serviceProviderName": 1,
                "createdForID": 1,
                "customerPhoneNumber": 1,
                "serviceType": "$serviceInfo.serviceType",
                "productName": "$productInfo.productName",
                "quantity": 1,
                "unit": "$productInfo.unit",
                "offdeleveryDate.startOffDate": 1,
                "offdeleveryDate.endOffDate": 1,
                "startOffDate": { '$dateToString': { format: '%Y-%m-%d', date: '$offdeleveryDate.startOffDate' } },
                "endOffDate": { '$dateToString': { format: '%Y-%m-%d', date: '$offdeleveryDate.endOffDate' } }
            }
        },
        {
            "$group": {
                "_id": {
                    "customerID": "$createdForID",
                    "customerName": "$customerName",
                    "customerPhoneNumber": "$customerPhoneNumber",
                    "serviceProviderName": "$serviceProviderName"
                },
                "customerDetails": {
                    "$push": {
                        "serviceType": "$serviceType",
                        "productName": "$productName",
                        "quantity": "$quantity",
                        "unit": "$unit",
                        "startOffDate": "$startOffDate",
                        "endOffDate": "$endOffDate"
                    }
                }

            }

        }
    ], function (err, data) {
        if (err) {
            return reply(Boom.forbidden(err));
        } else {
            if (data && data.length) {
                return reply(Common.successResponse('Success', data));
            } else {
                return reply(Common.successResponse('No entry available for this date.'));
            }
        }
    });
});
}

0 commentaires

0
votes

Vous pouvez également utiliser la bibliothèque de soulignement de NPM, après avoir obtenu le résultat de $ de requête de match, puis _.groupby () méthode de soulignement.


0 commentaires