All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.anwen.mongo.build.GroupBuilder Maven / Gradle / Ivy

There is a newer version: 2.1.6.1
Show newest version
package com.anwen.mongo.build;

import com.anwen.mongo.bson.MongoPlusBasicDBObject;
import com.anwen.mongo.conditions.BuildCondition;
import com.anwen.mongo.conditions.accumulator.Accumulator;
import com.anwen.mongo.constant.SqlOperationConstant;
import com.anwen.mongo.model.GroupField;
import com.anwen.mongo.toolkit.CollUtil;
import com.anwen.mongo.toolkit.StringUtils;
import com.mongodb.BasicDBObject;

import java.util.List;

/**
 * @author JiaChaoYang
 * @project mongo-plus
 * @description 使用建造者构建group的条件
 * @date 2023-11-13 17:41
 **/
public class GroupBuilder {

    private MongoPlusBasicDBObject basicDBObject;

    public GroupBuilder() {
        this.basicDBObject = new MongoPlusBasicDBObject();
    }

    public GroupBuilder withAccumulatorList(List accumulatorList) {
        if (CollUtil.isNotEmpty(accumulatorList)) {
            basicDBObject = BuildCondition.buildGroup(accumulatorList);
        }
        return this;
    }

    public GroupBuilder withId(String id) {
        if (StringUtils.isNotBlank(id)) {
            basicDBObject.put(SqlOperationConstant._ID, "$" + id);
        }
        return this;
    }

    public GroupBuilder withIdList(List idList) {
        if (CollUtil.isNotEmpty(idList)) {
            for (GroupField groupField : idList) {
                basicDBObject.put(SqlOperationConstant._ID,new BasicDBObject(){{
                    put(groupField.getGroupField(),"$" + groupField.getField());
                }});
            }
        }
        return this;
    }

    public GroupBuilder withIdAccumulator(List idAccumulator) {
        if (CollUtil.isNotEmpty(idAccumulator)) {
            basicDBObject.put(SqlOperationConstant._ID, BuildCondition.buildGroup(idAccumulator));
        }
        return this;
    }

    public BasicDBObject build() {
        return basicDBObject;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy