【发布时间】:2018-09-08 14:33:25
【问题描述】:
我是 MongoDb 的新手,希望能在此查询方面提供一些帮助。我编写了以下聚合管道。我从collection1写了查询我得到了输出(“Conventional Energy”:0.0036),我写了查询collection2我得到了输出(LastMonthConsumption“:2.08)但是如何添加两个带有单个聚合的集合(LastMonthConsumption”:2.08 *常规能源“:0.0036/常规能源”:0.0036)这是我需要的输出
我在 mongodb 中有这些数据:
COLLECTION 1:DATA
{
"slcId" : "51",
"clientId" : "1",
"dcuId" : "1",
"type" : "L",
"officeId" : "200-24",
"lampStatus" : "OFF",
"cummulativeKWH" : 133.7,
"powerFactor" : 1.0,
"createDate" : ISODate("2018-09-06T00:01:34.816Z")
},
{
"slcId" : "52",
"clientId" : "1",
"dcuId" : "1",
"type" : "L",
"officeId" : "200-24",
"lampStatus" : "OFF",
"cummulativeKWH" : 133.7,
"powerFactor" : 1.0,
"createDate" : ISODate("2018-09-07T21:01:34.816Z")
}
COLLECTION2:DATA
{
"_class" : "MongoStreetLightMonthlyVo",
"timeId" : ISODate("2018-08-04T16:40:08.817Z"),
"vendor" : "CIMCON",
"slcId" : "123450",
"mongoStreetLightChildVo" : {
"totalConsumptionMtd" : 2.08,
"prevConsumptionMtd" : 3.45,
"perChargeKWH" : 9.85,
}
},
{
"_class" : "MongoStreetLightMonthlyVo",
"timeId" : ISODate("2018-09-04T16:40:08.817Z"),
"vendor" : "CIMCON",
"slcId" : "123450",
"mongoStreetLightChildVo" : {
"totalConsumptionMtd" : 2.08,
"prevConsumptionMtd" : 3.45,
"perChargeKWH" : 9.85,
}
}
集合1:
db.collection1.aggregate([
{ $match:{"type" : "L"}},
{
$count: "TOTAL_Lights"
},
{ "$project": {
"Conventional Energy": {
"$divide": [
{ "$multiply": [
{ "$multiply": [ "$TOTAL_Lights" ,0.12 ] },
]},
1000
]
}
}},
])
输出:{“传统能源”:0.0036}
集合2:
db.collection2.aggregate(
[
// Stage 1
{
$group: {
_id:{year:{$year:"$timeId"},month:{$month:"$timeId"} },
LastMonthConsumption : {$sum:"$mongoStreetLightChildVo.totalConsumptionMtd"},
}
},
{
$redact: {
$cond: { if: { $and:[
{$eq: [ "$_id.year", {$year:new Date()} ]},
{$eq: [-1, {$subtract:[ "$_id.month", {$month:new Date()} ]}]}
]},
then: "$$KEEP",
else: "$$PRUNE"
}
}
},
{$project:{
_id:0,
LastMonthConsumption :1
}
}
]
);
输出:{ “上月消费”:2.08 }
预期输出:
LastMonthConsumption - Conventional Energy/Conventional Energy*100
【问题讨论】:
-
Hum, LastMonthConsumption * 常规能源/常规能源 = LastMonthConsumption *1 = LastMonthConsumption
-
sorry matthPen 我需要的输出:LastMonthConsumption-Conventional Energy/Conventional Energy*100 这是需要的输出请给我@matthPen
-
值是负数还是正数,请给我建议@matthPen
-
您能提供您的两个系列的样品吗?
-
是的,我将更新示例数据,请查找并解决我的问题@matthPen
标签: mongodb mongoose mongodb-query aggregation-framework