Ich habe eine Mitgliedersammlung und finde Mitglieder nach bestimmten Bedingungen und nachdem ich Mitglieder bekommen habe, muss ich ein paar Berechnungen für jedes Mitglied machen. Zur Berechnung der Notwendigkeit Abfrage für die gleiche Sammlung.Kann ich in der MongoDB eine Abfrage für "Jeder in Aggregat" beantragen?
Mein Prozess ist
var eachMemberInfo = [];
var members = db.collection('member').find({ createdDate: currentDate, country: 'BD'}).toArray();
members.forEach(function(doc) {
var result = db.collection('member').aggregate([
{ $match: { memberType: doc.memberType, country : doc.country } },
{
$group: {
_id: {memberType:"$memberType",country:"$country"},
memberCount: { $sum: {$cond:[{$gt: ["$numberOfInvitees",0]},1,0]} },
lessCount: { $sum: {$cond:[{$and:[{$lt:["$numberOfInvitees", doc.numberOfInvitees]}, {$gt: ["$numberOfInvitees",0]}]},1,0]} },
sameCount: { $sum: {$cond:[{$eq: ["$numberOfInvitees",doc.numberOfInvitees]},1,0]} }
}
}
]).toArray();
eachMemberInfo.push({memberId:doc.memberId,memberCount: result[0].memberCount, lessCount: result[0].lessCount});
});
Meine Frage ist, wie kann ich diese mit einzelnen Aggregatabfrage zu tun?
kann mir einer helfen pls :)
Zum Beispiel:
Mitglied Sammlung wie:
[{
"_id" : ObjectId("57905b2ca644ec06142a8c06"),
"memberID" : 80,
"memberType" : "N",
"numberOfInvitees" : 2,
"createdDate" : ISODate("2016-07-21T00:00:00.000Z"),
"country" : "BD"
},
{
"_id" : ObjectId("57905b2ca644ec06142a8c09"),
"memberID" : 81,
"memberType" : "N",
"numberOfInvitees" : 3,
"createdDate" : ISODate("2016-07-21T00:00:00.000Z"),
"country" : "BD"
}
{
"_id" : ObjectId("57905b2ca644ec06142a8fgh"),
"memberID" : 82,
"memberType" : "N",
"numberOfInvitees" : 4,
"createdDate" : ISODate("2016-07-21T00:00:00.000Z"),
"country" : "BD"
}
{
"_id" : ObjectId("57905b2ca644ec06142a8cfgd"),
"memberID" : 83,
"memberType" : "N",
"numberOfInvitees" : 1,
"createdDate" : ISODate("2016-07-21T00:00:00.000Z"),
"country" : "BD"
}
{
"_id" : ObjectId("57905b2ca644ec06142a8cfgd"),
"memberID" : 84,
"memberType" : "N",
"numberOfInvitees" : 2,
"createdDate" : ISODate("2016-07-21T00:00:00.000Z"),
"country" : "BD"
}
..............
]
Erwartetes Ergebnis in eachMemberInfo wie:
[
{ memberID : 80, memberCount:5,lessCount: 1,sameCount:2 },
{ memberID : 81, memberCount:5,lessCount: 3,sameCount:1 },
{ memberID : 82, memberCount:5,lessCount: 4,sameCount:1 },
{ memberID : 83, memberCount:5,lessCount: 0,sameCount:1 },
{ memberID : 84, memberCount:5,lessCount: 1,sameCount:2 }
]
Vielen Dank für Ihr Relais @chridam und wenn wir diese 'lessCount berechnen möchten: 'Wie kann ich mich bewerben? aktualisiert meine Frage –
Ihre Abfrage return einzelnes Objekt mit '_id, memberCount, sameCount' aber ich brauche' memberCount, sameCount' für jedes Mitglied –
Hallo @chridam Ich aktualisiere meine Frage mit Beispiel –