@Override public BulkOperations remove(Query query) { Assert.notNull(query, "Query must not be null!"); DeleteOptions deleteOptions = new DeleteOptions(); query.getCollation().map(Collation::toMongoCollation).ifPresent(deleteOptions::collation); models.add(new DeleteManyModel<>(query.getQueryObject(), deleteOptions)); return this; }
private WriteModel<Document> mapWriteModel(WriteModel<Document> writeModel) { if (writeModel instanceof UpdateOneModel) { UpdateOneModel<Document> model = (UpdateOneModel<Document>) writeModel; return new UpdateOneModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } if (writeModel instanceof UpdateManyModel) { UpdateManyModel<Document> model = (UpdateManyModel<Document>) writeModel; return new UpdateManyModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } if (writeModel instanceof DeleteOneModel) { DeleteOneModel<Document> model = (DeleteOneModel<Document>) writeModel; return new DeleteOneModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } if (writeModel instanceof DeleteManyModel) { DeleteManyModel<Document> model = (DeleteManyModel<Document>) writeModel; return new DeleteManyModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } return writeModel; }
} else if (writeModel instanceof DeleteManyModel) { DeleteManyModel<TDocument> deleteManyModel = (DeleteManyModel<TDocument>) writeModel; writeRequest = new DeleteRequest(toBsonDocument(deleteManyModel.getFilter())).multi(true) .collation(deleteManyModel.getOptions().getCollation()); } else { throw new UnsupportedOperationException(format("WriteModel of type %s is not supported", writeModel.getClass()));
} else { log.error("The delete filter '" + ((DeleteManyModel) failedModel).getFilter().toString() + "' failed to delete the events from the MongoDB Event Table due to " + bulkWriteError.getMessage());
} else if (writeModel instanceof DeleteManyModel) { DeleteManyModel<TDocument> deleteManyModel = (DeleteManyModel<TDocument>) writeModel; writeRequest = new DeleteRequest(toBsonDocument(deleteManyModel.getFilter())).multi(true) .collation(deleteManyModel.getOptions().getCollation()); } else { throw new UnsupportedOperationException(format("WriteModel of type %s is not supported", writeModel.getClass()));
MixedBulkWriteOperation deleteMany(final Bson filter, final DeleteOptions options) { return bulkWrite(singletonList(new DeleteManyModel<TDocument>(filter, options)), new BulkWriteOptions()); }
private WriteModel<Document> mapWriteModel(WriteModel<Document> writeModel) { if (writeModel instanceof UpdateOneModel) { UpdateOneModel<Document> model = (UpdateOneModel<Document>) writeModel; return new UpdateOneModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } if (writeModel instanceof UpdateManyModel) { UpdateManyModel<Document> model = (UpdateManyModel<Document>) writeModel; return new UpdateManyModel<>(getMappedQuery(model.getFilter()), getMappedUpdate(model.getUpdate()), model.getOptions()); } if (writeModel instanceof DeleteOneModel) { DeleteOneModel<Document> model = (DeleteOneModel<Document>) writeModel; return new DeleteOneModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } if (writeModel instanceof DeleteManyModel) { DeleteManyModel<Document> model = (DeleteManyModel<Document>) writeModel; return new DeleteManyModel<>(getMappedQuery(model.getFilter()), model.getOptions()); } return writeModel; }
@Override public BulkOperations remove(Query query) { Assert.notNull(query, "Query must not be null!"); DeleteOptions deleteOptions = new DeleteOptions(); query.getCollation().map(Collation::toMongoCollation).ifPresent(deleteOptions::collation); models.add(new DeleteManyModel<>(query.getQueryObject(), deleteOptions)); return this; }
private static List<WriteModel<Document>> createPolicyIndexModels(final Bson policiesFilter, final Collection<Document> policyEntries) { final DeleteManyModel<Document> deleteExistingPolicyEntries = new DeleteManyModel<>(policiesFilter); final List<WriteModel<Document>> writeModels = new ArrayList<>(); writeModels.add(deleteExistingPolicyEntries); policyEntries.stream() .map(InsertOneModel::new) .forEach(writeModels::add); return writeModels; }
private static List<WriteModel<Document>> createPolicyIndexModels(final Bson policiesFilter, final Collection<Document> policyEntries) { final DeleteManyModel<Document> deleteExistingPolicyEntries = new DeleteManyModel<>(policiesFilter); final List<WriteModel<Document>> writeModels = new ArrayList<>(); writeModels.add(deleteExistingPolicyEntries); policyEntries.stream() .map(InsertOneModel::new) .forEach(writeModels::add); return writeModels; }
@Override protected void delete(List<Map<String, Object>> deleteConditionParameterMaps, CompiledCondition compiledCondition) throws ConnectionUnavailableException { List<DeleteManyModel<Document>> parsedRecords = deleteConditionParameterMaps.stream().map( (Map<String, Object> conditionParameterMap) -> { Document deleteFilter = MongoTableUtils .resolveCondition((MongoCompiledCondition) compiledCondition, conditionParameterMap); return new DeleteManyModel<Document>(deleteFilter); }).collect(Collectors.toList()); this.bulkWrite(parsedRecords); }
MixedBulkWriteOperation deleteMany(final Bson filter, final DeleteOptions options) { return bulkWrite(singletonList(new DeleteManyModel<TDocument>(filter, options)), new BulkWriteOptions()); }
public BulkWriteResult remove(List<? extends Bson> queryList, boolean multi) { List<WriteModel<Document>> actions = new ArrayList<>(queryList.size()); if (multi) { for (Bson document : queryList) { actions.add(new DeleteManyModel<>(document)); } } else { for (Bson document : queryList) { actions.add(new DeleteOneModel<>(document)); } } return dbCollection.bulkWrite(actions, new BulkWriteOptions().ordered(false)); }
@Override public BulkOperationResult bulkDeleteDocuments( String dbName, String collName, BsonDocument filter, BsonDocument shardedKeys) { MongoDatabase mdb = client.getDatabase(dbName); MongoCollection<BsonDocument> mcoll = mdb.getCollection(collName, BsonDocument.class); List<WriteModel<BsonDocument>> deletes = new ArrayList<>(); Bson _filter; if (shardedKeys != null) { _filter = and(filter, shardedKeys); } else { _filter = filter; } deletes.add(new DeleteManyModel<>(_filter)); BulkWriteResult result = mcoll.bulkWrite(deletes); return new BulkOperationResult(HttpStatus.SC_OK, null, result); }
private <T extends ThingEvent> List<WriteModel<Document>> createPolicyUpdates(final T thingEvent, final Enforcer policyEnforcer) { final List<PolicyUpdate> updates = persistenceStrategyFactory .getStrategy(thingEvent) .policyUpdates(thingEvent, policyEnforcer); final List<WriteModel<Document>> writeModels = new ArrayList<>(); updates.forEach(policyUpdate -> { writeModels.add(new DeleteManyModel<>(policyUpdate.getPolicyIndexRemoveFilter())); policyUpdate.getPolicyIndexInsertEntries() .forEach(document -> writeModels.add(new InsertOneModel<>(document))); }); return writeModels; }
private <T extends ThingEvent> List<WriteModel<Document>> createPolicyUpdates(final T thingEvent, final Enforcer policyEnforcer) { final List<PolicyUpdate> updates = persistenceStrategyFactory .getStrategy(thingEvent) .policyUpdates(thingEvent, policyEnforcer); final List<WriteModel<Document>> writeModels = new ArrayList<>(); updates.forEach(policyUpdate -> { writeModels.add(new DeleteManyModel<>(policyUpdate.getPolicyIndexRemoveFilter())); policyUpdate.getPolicyIndexInsertEntries() .forEach(document -> writeModels.add(new InsertOneModel<>(document))); }); return writeModels; }
private void removeInBulk(boolean ordered) { DeleteManyModel<Document> deleteOp = new DeleteManyModel<>(json("field: 'y'")); BulkWriteResult result = collection.bulkWrite(Collections.singletonList(deleteOp), new BulkWriteOptions().ordered(ordered)); assertThat(result.getDeletedCount()).isEqualTo(3); assertThat(collection.countDocuments()).isZero(); }
DriverHelper.replaceMorphiumIdByObjectId(((DeleteBulkRequest) br).getQuery()); if (dbr.isMultiple()) { lst.add(new DeleteManyModel<>(new Document(dbr.getQuery()))); } else { lst.add(new DeleteOneModel<>(new Document(dbr.getQuery())));
@Override public Source<Optional<Throwable>, NotUsed> purge(final MongoNamespaceSelection selection) { final MongoCollection<Document> collection = db.getCollection(selection.getCollectionName()); if (selection.isEntireCollection()) { return Source.fromPublisher(collection.drop()) .map(success -> Optional.empty()); } else { // https://stackoverflow.com/a/33164008 // claims unordered bulk ops halve MongoDB load final List<WriteModel<Document>> writeModel = Collections.singletonList(new DeleteManyModel<>(selection.getFilter())); final BulkWriteOptions options = new BulkWriteOptions().ordered(false); return Source.fromPublisher(collection.bulkWrite(writeModel, options)) .map(result -> Optional.<Throwable>empty()) .recover(Match.<Throwable, Optional<Throwable>>matchAny(Optional::of).build()); } }