我有像下面这样的Mongo documents
,想要执行聚合,以找到每个唯一的联系人的错误代码计数.
{
"_id": {
"$oid": ""
},
"campId": "61baef7817cd8ff66518", //camp1
"contactId": "61aa6fbf77490b0007714273", // contact 1
"title": "Happy Holidays!",
"communicationType": "EMAIL",
"contactedOnTime": {
"$numberLong": "1695182032" // AT TIME1
},
"communicationValidationError": "EMAIL_ADDRESS_NOT_PRESENT"
}
{
"_id": {
"$oid": ""
},
"campId": "61baef7817cd8ff66518", //camp1
"contactId": "61aa6fbf77490b0007714273", // contact1
"title": "Happy Holidays!",
"communicationType": "EMAIL",
"contactedOnTime": {
"$numberLong": "1695182074" // AT TIME2
},
"communicationValidationError": "EMAIL_ADDRESS_NOT_PRESENT"
}
{
"_id": {
"$oid": ""
},
"campId": "61baef7817cd8ff66518", // camp1
"contactId": "61aa6fbf77490b0007714274", // contact2
"title": "Happy Holidays!",
"communicationType": "EMAIL",
"contactedOnTime": {
"$numberLong": "1695182059"
},
"communicationValidationError": "EMAIL_BOUNCED"
}
我在下面试过了,但是这并不能消除Camp的重复联系人,并且显示为2而不是1.我需要为唯一的联系人 Select 最新的Communication ValidationError,并将其作为campID的Communication ValidationError的totalcounts
%.
db.myCollection.aggregate([
{ $project: { _id: 0, campId: 1, contactId: 1, communicationValidationError: 1 } },
{ $sort: { "contactedOnTime.numberLong":-1}},
{ $match: { campId: '61baef7817cd8ff66518' } },
{ $group: { _id: { communicationValidationError: '$communicationValidationError' }, totalErrors: { $sum: 1 } } }
]).pretty()