package com.anwen.mongo.aggregate.pipeline;
import com.anwen.mongo.support.SFunction;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.BsonField;
import com.mongodb.lang.Nullable;
import org.bson.BsonArray;
import org.bson.BsonDocument;
import org.bson.BsonString;
import org.bson.Document;
import org.bson.conversions.Bson;
import java.util.Arrays;
import java.util.List;
import static com.mongodb.assertions.Assertions.notNull;
import static java.util.stream.Collectors.toList;
/**
* 构建累加器
*
* @author anwen
* @date 2024/6/12 下午3:44
*/
public final class Accumulators {
/**
* 获取 $group 操作的字段名称,该字段表示将给定表达式应用于组内所有成员时的值的总和。
*
* @param fieldName 字段名称
* @param expression 表达式
* @param <TExpression> 表达式类型
* @return $sum
* @since mongodb.driver.manual reference/operator/aggregation/sum/ $sum
*/
public static <TExpression> BsonField sum(final String fieldName, final TExpression expression) {
return accumulatorOperator("$sum", fieldName, expression);
}
/**
* 获取 $group 操作的字段名称,该字段表示将给定表达式应用于组内所有成员时的值的总和。
* 该累加器会默认count=1
* <p>count: { $sum: 1 }</p>
* @param <TExpression> 表达式类型
* @return $sum
* @since mongodb.driver.manual reference/operator/aggregation/sum/ $sum
*/
public static <TExpression> BsonField sum() {
return accumulatorOperator("$sum", "count", 1);
}
/**
* 获取 $group 操作的字段名称,该字段表示将给定表达式应用于组内所有成员时的值的总和。
*
* @param fieldName 字段名称
* @param expression 表达式
* @param <TExpression> 表达式类型
* @return $sum
* @since mongodb.driver.manual reference/operator/aggregation/sum/ $sum
*/
public static <TExpression,T> BsonField sum(final SFunction<T,?> fieldName, final TExpression expression) {
return sum(fieldName.getFieldNameLine(),expression);
}
/**
* 取 $group 操作的字段名称,该字段表示将给定表达式应用于组内所有成员时的总数。
* @param fieldName 字段名称
* @param expression 表达式
* @author anwen
* @date 2024/8/23 10:57
*/
public static <TExpression> BsonField count(final String fieldName,final TExpression expression){
return accumulatorOperator("$count",fieldName,expression);
}
/**
* 取 $group 操作的字段名称,该字段表示将给定表达式应用于组内所有成员时的总数。
* @param fieldName 字段名称
* @param expression 表达式
* @author anwen
* @date 2024/8/23 10:57
*/
public static <T,TExpression> BsonField count(final SFunction<T,?> fieldName,final TExpression expression){
return count(fieldName.getFieldNameLine(),expression);
}
/**
* 取 $group 操作的字段名称,该字段表示将给定表达式应用于组内所有成员时的总数。
* 表达式默认为空对象
* @param fieldName 字段名称
* @author anwen
* @date 2024/8/23 10:57
*/
public static <T,TExpression> BsonField count(final SFunction<T,?> fieldName){
return count(fieldName.getFieldNameLine(),new Document());
}
/**
* 取 $group 操作的字段名称,该字段表示将给定表达式应用于组内所有成员时的总数。
* 表达式默认为空对象
* @param fieldName 字段名称
* @author anwen
* @date 2024/8/23 10:57
*/
public static <TExpression> BsonField count(final String fieldName){
return count(fieldName,new Document());
}
/**
* 获取 $group 操作的字段名称,该字段表示将给定表达式应用于组内所有成员时的平均值。
*
* @param fieldName 字段名称
* @param expression 表达式
* @param <TExpression> 表达式类型
* @return $avg
* @since mongodb.driver.manual reference/operator/aggregation/avg/ $avg
*/
public static <TExpression> BsonField avg(final String fieldName, final TExpression expression) {
return accumulatorOperator("$avg", fieldName, expression);
}
/**
* 获取 $group 操作的字段名称,该字段表示将给定表达式应用于组内所有成员时的平均值。
*
* @param fieldName 字段名称
* @param expression 表达式
* @param <TExpression> 表达式类型
* @return $avg
* @since mongodb.driver.manual reference/operator/aggregation/avg/ $avg
*/
public static <TExpression,T> BsonField avg(final SFunction<T,?> fieldName, final TExpression expression) {
return avg(fieldName.getFieldNameLine(),expression);
}
/**
* 获取 $group 操作的字段名称,该字段名称表示应用于组的第一个成员时给定表达式的值。
*
* @param fieldName 字段名称
* @param expression 表达式
* @param <TExpression> 表达式类型
* @return $first
* @since mongodb.driver.manual reference/operator/aggregation/first/ $first
*/
public static <TExpression> BsonField first(final String fieldName, final TExpression expression) {
return accumulatorOperator("$first", fieldName, expression);
}
/**
* 获取 $group 操作的字段名称,该字段名称表示应用于组的第一个成员时给定表达式的值。
*
* @param fieldName 字段名称
* @param expression 表达式
* @param <TExpression> 表达式类型
* @return $first
* @since mongodb.driver.manual reference/operator/aggregation/first/ $first
*/
public static <TExpression,T> BsonField first(final SFunction<T,?> fieldName, final TExpression expression) {
return first(fieldName.getFieldNameLine(),expression);
}
/**
* 返回计算字段和累加器的组合,该组合生成一个 BSON {@link org.bson.BsonType#ARRAY Array} ,该数组包含给定{@code inExpression}的值,该值是根据预排序组中的前{@code N}个元素计算的,其中N是{@code nExpression}的正整数值。
*
* @param fieldName 由累加器计算的字段。
* @param inExpression 输入表达式
* @param nExpression 限制产生的值的数量的表达式
* @param <InExpression> 输入表达式的类型.
* @param <NExpression> 限制表达式的类型.
* @return 请求的 {@link BsonField}.
* @since mongodb.driver.manual reference/operator/aggregation/firstN/ $firstN
* @since 4.7
* @since mongodb.server.release 5.2
*/
public static <InExpression, NExpression> BsonField firstN(
final String fieldName, final NExpression nExpression, final InExpression inExpression) {
return pickNAccumulator(notNull("fieldName", fieldName), "$firstN",
notNull("inExpression", inExpression), notNull("nExpression", nExpression));
}
/**
* 返回计算字段和累加器的组合,该组合生成一个 BSON {@link org.bson.BsonType#ARRAY Array} ,该数组包含给定{@code inExpression}的值,该值是根据预排序组中的前{@code N}个元素计算的,其中N是{@code nExpression}的正整数值。
*
* @param fieldName 由累加器计算的字段。
* @param inExpression 输入表达式
* @param nExpression 限制产生的值的数量的表达式
* @param <InExpression> 输入表达式的类型.
* @param <NExpression> 限制表达式的类型.
* @return 请求的 {@link BsonField}.
* @since mongodb.driver.manual reference/operator/aggregation/firstN/ $firstN
* @since 4.7
* @since mongodb.server.release 5.2
*/
public static <InExpression, NExpression,T> BsonField firstN(
final SFunction<T,?> fieldName, final NExpression nExpr
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MongoPlus-数据库 (404个子文件)
spring.factories 623B
.gitignore 512B
.gitignore 512B
org.springframework.boot.autoconfigure.AutoConfiguration.imports 404B
Accumulators.java 77KB
Filters.java 53KB
Aggregate.java 49KB
BaseProperty.java 46KB
Compare.java 39KB
CompareToBuilder.java 35KB
AggregateTest.java 33KB
IService.java 32KB
StringUtils.java 31KB
LambdaAggregateWrapper.java 30KB
Update.java 27KB
AbstractChainWrapper.java 27KB
ServiceImpl.java 26KB
AbstractBaseMapper.java 25KB
Assert.java 24KB
Projections.java 20KB
BuildCondition.java 18KB
BsonUtil.java 18KB
UpdateChainWrapper.java 17KB
BaseMapper.java 16KB
AbstractMongoConverter.java 15KB
DefaultBaseMapperImpl.java 15KB
Mapper.java 15KB
Configuration.java 15KB
MappingMongoConverter.java 15KB
DataChangeRecorderInnerInterceptor.java 14KB
ULID.java 13KB
MongoPlusAutoConfiguration.java 12KB
SuperMapper.java 12KB
MongoPlusAutoConfiguration.java 12KB
Indexes.java 12KB
MongoTransactionalManager.java 11KB
DesensitizedUtil.java 11KB
ClassTypeUtil.java 10KB
MongoPlusConfiguration.java 10KB
IndexUtil.java 10KB
ConditionOperators.java 10KB
MongoPlusConfiguration.java 10KB
MongoCommandBuildUtils.java 8KB
MongoConverter.java 8KB
UrlJoint.java 8KB
SimpleFieldInformation.java 7KB
Sorts.java 7KB
TenantInterceptor.java 7KB
MongoPlusClient.java 7KB
Sequence.java 7KB
Interceptor.java 6KB
SFunction.java 6KB
CompareCondition.java 6KB
EncryptorUtil.java 6KB
SimpleTypeInformation.java 6KB
Projection.java 6KB
SessionExecute.java 6KB
AbstractCondition.java 6KB
LogicDeleteHandler.java 5KB
DefaultExecute.java 5KB
SimpleTypeHolder.java 5KB
MongoCompareTest.java 5KB
AutoUtil.java 5KB
FillField.java 5KB
AutoFillMetaObject.java 5KB
FieldInformation.java 5KB
PageResult.java 5KB
AESExample.java 4KB
TypeInformation.java 4KB
ChainQuery.java 4KB
MongoUtil.java 4KB
Pair.java 4KB
LogFactory.java 4KB
QueryChainWrapper.java 4KB
Log4j2AbstractLoggerImpl.java 3KB
StringEscape.java 3KB
IdWorker.java 3KB
CollectionLogiceInterceptor.java 3KB
Project.java 3KB
AggregateOptions.java 3KB
MapCodecCache.java 3KB
MongoTransactionalAspect.java 3KB
StringPool.java 3KB
Slf4jLocationAwareLoggerImpl.java 3KB
ConversionCache.java 3KB
PBEExample.java 3KB
EncryptionPostProcessor.java 3KB
CustomClassUtil.java 3KB
GenerateKeyUtil.java 3KB
Project.java 3KB
OperationResult.java 3KB
MongoDataSourceAspect.java 3KB
UpdateCondition.java 3KB
MutablePair.java 3KB
MongoClientFactory.java 3KB
MongoDBConfigurationProperty.java 3KB
Slf4jImpl.java 3KB
Condition.java 3KB
LogListener.java 3KB
MongoTransactionalAspect.java 3KB
共 404 条
- 1
- 2
- 3
- 4
- 5
资源评论
lly202406
- 粉丝: 2388
- 资源: 5389
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 个人使用的数据代码,上传用
- Real-ESRGAN模型weights、models文件
- 技术资料分享ADDAV20SCH很好的技术资料.zip
- 技术资料分享AD9833-CH很好的技术资料.zip
- 技术资料分享AD9708很好的技术资料.zip
- 技术资料分享AD9280很好的技术资料.zip
- 技术资料分享74LS154-很好的技术资料.zip
- 技术资料分享74HC595中文资料很好的技术资料.zip
- 技术资料分享0b-esp8266-system-description-cn-v1.4很好的技术资料.zip
- 技术资料分享0a-esp8266ex-datasheet-cn-v1.0很好的技术资料.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功