在MongoDB中减去2个以上的参数

问题描述 投票:-1回答:1

我想从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);
java mongodb
1个回答
1
投票

从文档$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"
     ]}
 ]);
© www.soinside.com 2019 - 2024. All rights reserved.