package de.idealo.mongodb.perf.operations; import com.mongodb.client.result.DeleteResult; import de.idealo.mongodb.perf.MongoDbAccessor; import static com.mongodb.client.model.Filters.eq; /** * Created by kay.agahd on 23.11.16. */ public class DeleteOperation extends AbstractOperation { public DeleteOperation(MongoDbAccessor mongoDbAccessor, String db, String collection, String field){ super(mongoDbAccessor, db, collection, field); } @Override long executeQuery(int threadId, long threadRunCount, long globalRunCount, long selectorId, long randomId) { final DeleteResult res = THREAD_RUN_COUNT.equals(queriedField)?mongoCollection.deleteMany(eq(queriedField, selectorId)) :ID.equals(queriedField)?mongoCollection.deleteOne(eq(queriedField, selectorId)):null; return res!=null?res.getDeletedCount():0l; } @Override public OperationModes getOperationMode() { if (IOperation.THREAD_RUN_COUNT.equals(queriedField)) return OperationModes.DELETE_MANY; else return OperationModes.DELETE_ONE; } }