Ich habe folgende mongodb Aggregatabfrage, die Gruppe nach Datum (2017.01.05 bis 1-13-2017)Wie kann ich ein neues Feld zum Mongo-Gesamtergebnis hinzufügen?
CampaignActivity.aggregate([
{
"$match": {
"$and":[{updatedAt: {$lt: new Date('1-13-2017')}},{updatedAt: {$gte: new Date('1-05-2017')}}]
}
},
{
"$project" :
{
_id : 0,
"datePartDay" : {"$concat" : [
{"$substr" : [{"$dayOfMonth" : "$updatedAt"}, 0, 2]}, "-",
{"$substr" : [{"$month" : "$updatedAt"}, 0, 2]}, "-",
{"$substr" : [{"$year" : "$updatedAt"}, 0, 4]}
] },
"isdelivered": {"$cond": { if: { $eq: [ "$delivered", true ] }, then: 1, else: 0 }},
"isclicked": {"$cond": { if: { $eq: [ "$clicked", true ] }, then: 1, else: 0 }},
"isunsubscribe": {"$cond": { if: { $eq: [ "$unsubscribed", true ] }, then: 1, else: 0 }}
}
},
{ "$group" :
{ "_id" : "$datePartDay",
"delivered" : { "$sum" :'$isdelivered' },
"clicked" : { "$sum" :'$isclicked' },
"unsubscribed" : { "$sum" :'$isunsubscribe' }
}
}
],function (err, result) {
if (err) {
console.log(err);
} else {
console.log(result);
}
});
Gesamtergebnis:
[
{
"_id": "12-1-2017",
"delivered": 0,
"clicked": 1,
"unsubscribed": 1
},
{
"_id": "11-1-2017",
"delivered": 2,
"clicked": 1,
"unsubscribed": 0
}
]
Ist es möglich, neue Felder hinzufügen, um zu ergeben, dass in der Sammlung nicht etwas wie "Datum" existiert?
Ist es möglich, fehlende Datumsfelder mit Dummy-Daten zu ergänzen?
Sie können mit Feldern, die Sie – styopdev
hinzufügen möchten nach $ group neue $ Projizierungsoperation hinzufügen Was Version mongo sind Sie? – Veeram
@SagarReddy, Mongo-Version: 3.2.6 – Kepler