Mongodb 使用spring数据聚合表示复杂的投影是否存在缺陷
我的朋友就是这样Mongodb 使用spring数据聚合表示复杂的投影是否存在缺陷,mongodb,spring-data-mongodb,Mongodb,Spring Data Mongodb,我的朋友就是这样 db.data.aggregate( { “$project”:{ “小时”:{“$hour”:“$time”}, “_id”:0, "时间":1,, “原始价值”:1, “fid”:1 } }, { “$group”:{ “_id”:{“hour”:“$hour”,“fid”:“$fid”}, “maxTime”:{ $max:“$time” }, “minTime”:{ $min:“$time” }, “maxVal”:{ $max:“$rawValue” }, “minV
db.data.aggregate(
{
“$project”:{
“小时”:{“$hour”:“$time”},
“_id”:0,
"时间":1,,
“原始价值”:1,
“fid”:1
}
},
{
“$group”:{
“_id”:{“hour”:“$hour”,“fid”:“$fid”},
“maxTime”:{
$max:“$time”
},
“minTime”:{
$min:“$time”
},
“maxVal”:{
$max:“$rawValue”
},
“minVal”:{
“$min”:“$rawValue”
}
}
},
{
“$project”:{
“小时”:“$\u id.hour”,
“_id”:0,
“价值”:{
“$divide”:[
{“$subtract”:[“$maxVal”,“$minVal”]},
{“$divide”:[{“$subtract”:[“$maxTime”,“$minTime”]},60*60*1000]}
]
}
}
},
{
“$group”:{
“_id”:“$hour”,
“avgH”:{
$sum:“$value”
}
}
},
{
“$sort”:{“\u id”:1}
}
)
这是输入文档:
{
“_id”:ObjectId(“538408349aedda51a98a37f8”),
“_类”:“ruijian.common.baseInfo.domain.FunctionValuePO”,
“fid”:“320102A002\U 01\U 0400\U 040000”,
“buildingid”:“320102A002”,
“时间”:ISODate(“2012-12-31T17:31:36Z”),
“编码”:“01000”,
“原始价值”:1691.2
}
我的java代码
Aggregation aggregation = newAggregation(
match(criteria),
project("time","rawValue","fid").andExclude("_id")
.and("time").project("hour").as("hour"),
group("hour","fid").max("time").as("maxTime")
.min("time").as("minTime")
.max("rawValue").as("maxVal")
.min("rawValue").as("minVal"),
project().and("_id.hour").as("hour")
.andExpression("(maxVal - minVal) / ((maxTime - minTime) / (60 * 60 * 1000))").as("value")
.andExclude("_id"),
group("hour").sum("value").as("avgH"),
sort(Direction.ASC,"_id")
);
正是“andExpression((maxVal-minVal)/(maxTime-minTime)/(60*60*1000))”转换为mongodb的表达式是“$divide”:[
{
“$subtract”:[
“$maxVal”,
“$minVal”
]
},
{
“$subtract”:[
“$maxTime”,
“$minTime”
]
},
{
“$multiply”:[
60,
60,
1000
]
}
]
异常信息为[命令执行失败:错误[异常:表达式$divide正好包含2个参数。传入了3个参数。]可能有助于显示您到目前为止所做的工作。我猜想您希望使用聚合的mongoOperations形式而不是原始方法聚合到类输出。我已重新编辑了我的问题,请帮助