Javascript 如何合并和汇总MongoDB的结果
我按不同日期对数据进行切片,例如:Javascript 如何合并和汇总MongoDB的结果,javascript,node.js,mongodb,mongoose,mongodb-query,Javascript,Node.js,Mongodb,Mongoose,Mongodb Query,我按不同日期对数据进行切片,例如: [{ "_id" : ObjectId("5de4103552f7535d31c2e3e1"), "attributedUnitsOrdered14d" : 0, "clicks" : 1, "targetId" : NumberLong(209434056899554), "campaignId" : NumberLong(106574821410524), "query" : "miami hurricane
[{
"_id" : ObjectId("5de4103552f7535d31c2e3e1"),
"attributedUnitsOrdered14d" : 0,
"clicks" : 1,
"targetId" : NumberLong(209434056899554),
"campaignId" : NumberLong(106574821410524),
"query" : "miami hurricanes t shirt",
"targetingType" : "TARGETING_EXPRESSION_PREDEFINED",
"campaignName" : "Miami Hurricanes - Sponsored Products - Auto",
"targetingExpression" : "close-match",
"adGroupId" : NumberLong(141291184479487),
"targetingText" : "close-match",
"date" : ISODate("2019-10-07T00:00:00.000Z"),
"__v" : 0
},
{
"_id" : ObjectId("5de4104b52f7535d31c2e3e7"),
"attributedUnitsOrdered14d" : 1,
"clicks" : 1,
"targetId" : NumberLong(209434056899554),
"campaignId" : NumberLong(106574821410524),
"query" : "miami hurricanes t shirt",
"targetingType" : "TARGETING_EXPRESSION_PREDEFINED",
"campaignName" : "Miami Hurricanes - Sponsored Products - Auto",
"targetingExpression" : "close-match",
"adGroupId" : NumberLong(141291184479487),
"targetingText" : "close-match",
"date" : ISODate("2019-10-08T00:00:00.000Z"),
"__v" : 0
},
{
"_id" : ObjectId("5de4105952f7535d31c2e3eb"),
"attributedUnitsOrdered14d" : 1,
"clicks" : 1,
"targetId" : NumberLong(209434056899554),
"campaignId" : NumberLong(106574821410524),
"query" : "miami hurricanes t shirt",
"targetingType" : "TARGETING_EXPRESSION_PREDEFINED",
"campaignName" : "Miami Hurricanes - Sponsored Products - Auto",
"targetingExpression" : "close-match",
"adGroupId" : NumberLong(141291184479487),
"targetingText" : "close-match",
"date" : ISODate("2019-10-09T00:00:00.000Z"),
"__v" : 0
}]
这些是同一个活动的相同报告,但针对不同的日子。我想获取字段的总和单击
&属性监视14D
&将其作为单个对象返回,如下所示:
{
"_id" : ...,
"attributedUnitsOrdered14d" : 2, // Sum of all the 3 objects
"clicks" : 3, // Sum of all the 3 objects
"targetId" : NumberLong(209434056899554),
"campaignId" : NumberLong(106574821410524),
"query" : "miami hurricanes t shirt",
"targetingType" : "TARGETING_EXPRESSION_PREDEFINED",
"campaignName" : "Miami Hurricanes - Sponsored Products - Auto",
"targetingExpression" : "close-match",
"adGroupId" : NumberLong(141291184479487),
"targetingText" : "close-match",
"date" : ISODate("2019-10-07T00:00:00.000Z"),
}
我可以使用中间件(pre-hook forfind
query)或类似的东西吗 似乎一个简单的例子就足够了:
db.collection.aggregate([
{
$group: {
_id: null, //decide on different grouping id if needed.
attributedUnitsOrdered14d: {$sum: "$attributedUnitsOrdered14d"},
clicks: {$sum: "$clicks"},
date: {$last: "$date"}, //assuming data is sorted, if not add $sort before $group
targetId: {$first: "$targetId"},
campaignId: {$first: "$campaignId"},
query: {$first: "$query"},
targetingType: {$first: "$targetingType"},
campaignName: {$first: "$campaignName"},
targetingExpression: {$first: "$targetingExpression"},
adGroupId: {$first: "$adGroupId"},
targetingText: {$first: "$targetingText"},
}
}
])
似乎一个简单的例子就足够了:
db.collection.aggregate([
{
$group: {
_id: null, //decide on different grouping id if needed.
attributedUnitsOrdered14d: {$sum: "$attributedUnitsOrdered14d"},
clicks: {$sum: "$clicks"},
date: {$last: "$date"}, //assuming data is sorted, if not add $sort before $group
targetId: {$first: "$targetId"},
campaignId: {$first: "$campaignId"},
query: {$first: "$query"},
targetingType: {$first: "$targetingType"},
campaignName: {$first: "$campaignName"},
targetingExpression: {$first: "$targetingExpression"},
adGroupId: {$first: "$adGroupId"},
targetingText: {$first: "$targetingText"},
}
}
])
是否有一种方法可以实现我使用lodash所需的结果?是否有一种方法可以实现我使用lodash所需的结果?