var user_id = req.body.user_id; TeamAttendance.aggregate( [ {$match : { allMembers : user_id }, {$group : { _id : "$team_id" }} ]).exec()
3 Réponses :
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()
Merci @sushant. Le problème était que je n'ai pas converti l'utilisateur_id en objet. mongoose.types.objectid (req.body.user_id) i> --- Cela m'a sauvé.
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.')); } } }); }); }
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. p>