我想从MySQL表中读取一些公式并使用以下命令在java中运行:
mongoTemplate.aggregate()
有些公式可以减去(2-3-4)或像(8/7/6)那样。我在java中编写mongoDB项目代码:
ProjectionOperation projectStage = Aggregation.project()
.andExpression(Formula).as("totalSum");
公式来自MySQL。但是,.aggregate()会返回此错误:
失败:表达式$ subtract只需要2个参数。 3人被传入
我无法更改MySQL表。因为它有超过500个公式。我该怎么做才能使用.aggregate()减去或除以2个以上的参数?
我可能需要的其他代码:
Aggregation aggregation = Aggregation.newAggregation(matchStage, groupStage,projectStage);
AggregationResults<CalculateAggregateDataView> calculateAggregateDataViews =
mongoTemplate.aggregate(aggregation, MyCollection ,
CalculateAggregateDataView.class);
从文档$subtract可以接受任何expression,你可以嵌套表达式。
检查这个mongo shell示例:
假设我们在collection
中有以下文档
{
"value1":4,
"value2":3,
"value3":2
}
所以我们可以进行以下聚合:
db.collection.aggregate([
{$addFields: {$subtract: [
{$subtract: ["$value1","$value2"]}, //will serve as the first input for the outer $subtract
"$value3"
]}
]);