Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用spring数据聚合表示复杂的投影是否存在缺陷_Mongodb_Spring Data Mongodb - Fatal编程技术网

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形式而不是原始方法聚合到类输出。我已重新编辑了我的问题,请帮助