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

com.anwen.mongo.execute.instance.SessionExecute Maven / Gradle / Ivy

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

import com.anwen.mongo.convert.DocumentMapperConvert;
import com.anwen.mongo.execute.Execute;
import com.anwen.mongo.model.AggregateBasicDBObject;
import com.mongodb.BasicDBObject;
import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.client.AggregateIterable;
import com.mongodb.client.ClientSession;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.model.*;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.InsertManyResult;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.bson.conversions.Bson;

import java.util.List;
import java.util.Optional;

/**
 * session实例
 *
 * @author JiaChaoYang
 * @project mongo-plus
 * @date 2023-12-28 11:03
 **/
public class SessionExecute implements Execute {

    private final ClientSession clientSession;

    public SessionExecute(ClientSession clientSession) {
        this.clientSession = clientSession;
    }

    @Override
    public InsertManyResult executeSave(List documentList, MongoCollection collection) {
        return collection.insertMany(clientSession,documentList);
    }

    @Override
    public BulkWriteResult executeBulkWrite(List> writeModelList, MongoCollection collection) {
        return collection.bulkWrite(clientSession,writeModelList);
    }

    @Override
    public DeleteResult executeRemove(Bson filter, MongoCollection collection) {
        return collection.deleteOne(clientSession, filter);
    }

    @Override
    public  FindIterable executeQuery(Bson queryBasic, BasicDBObject projectionList, BasicDBObject sortCond, MongoCollection collection, Class clazz) {
        return Optional.ofNullable(queryBasic)
                .map(qb -> collection.find(clientSession,qb,clazz))
                .orElseGet(() -> collection.find(clientSession,clazz))
                .projection(projectionList)
                .sort(sortCond);
    }

    @Override
    public  AggregateIterable executeAggregate(List aggregateConditionList, MongoCollection collection, Class clazz) {
        return collection.aggregate(clientSession,aggregateConditionList, clazz);
    }

    @Override
    public long executeCount(BasicDBObject queryBasic, CountOptions countOptions, MongoCollection collection) {
        return Optional.ofNullable(countOptions).map(co -> collection.countDocuments(clientSession, queryBasic,co)).orElseGet(() -> collection.countDocuments(clientSession, queryBasic));
    }

    @Override
    public long estimatedDocumentCount(MongoCollection collection) {
        return collection.countDocuments();
    }

    @Override
    public UpdateResult executeUpdate(Bson queryBasic, Bson updateBasic, MongoCollection collection) {
        return collection.updateMany(clientSession,queryBasic,updateBasic);
    }

    @Override
    public String doCreateIndex(Bson bson, MongoCollection collection) {
        return collection.createIndex(clientSession,bson);
    }

    @Override
    public String doCreateIndex(Bson bson, IndexOptions indexOptions, MongoCollection collection) {
        return collection.createIndex(clientSession,bson,indexOptions);
    }

    @Override
    public List doCreateIndexes(List indexes, MongoCollection collection) {
        return collection.createIndexes(clientSession,indexes);
    }

    @Override
    public List doCreateIndexes(List indexes, CreateIndexOptions createIndexOptions, MongoCollection collection) {
        return collection.createIndexes(clientSession,indexes,createIndexOptions);
    }

    @Override
    public List doListIndexes(MongoCollection collection) {
        return DocumentMapperConvert.indexesIterableToDocument(collection.listIndexes(clientSession));
    }

    @Override
    public void doDropIndex(String indexName, MongoCollection collection) {
        collection.dropIndex(clientSession,indexName);
    }

    @Override
    public void doDropIndex(String indexName, DropIndexOptions dropIndexOptions, MongoCollection collection) {
        collection.dropIndex(clientSession,indexName,dropIndexOptions);
    }

    @Override
    public void doDropIndex(Bson keys, MongoCollection collection) {
        collection.dropIndex(clientSession,keys);
    }

    @Override
    public void doDropIndex(Bson keys, DropIndexOptions dropIndexOptions, MongoCollection collection) {
        collection.dropIndex(clientSession,keys,dropIndexOptions);
    }

    @Override
    public void doDropIndexes(MongoCollection collection) {
        collection.dropIndexes(clientSession);
    }

    @Override
    public void doDropIndexes(DropIndexOptions dropIndexOptions, MongoCollection collection) {
        collection.dropIndexes(clientSession,dropIndexOptions);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy