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>