@Override com.mongodb.bulk.WriteRequest toNew(final DBCollection dbCollection) { return new DeleteRequest(new BsonDocumentWrapper<DBObject>(query, this.codec)).multi(isMulti()).collation(collation); } }
static void validateWriteRequestCollations(final ConnectionDescription connectionDescription, final List<? extends WriteRequest> requests, final WriteConcern writeConcern) { Collation collation = null; for (WriteRequest request : requests) { if (request instanceof UpdateRequest) { collation = ((UpdateRequest) request).getCollation(); } else if (request instanceof DeleteRequest) { collation = ((DeleteRequest) request).getCollation(); } if (collation != null) { break; } } validateCollationAndWriteConcern(connectionDescription, collation, writeConcern); }
@Override protected EncodingMetadata encodeMessageBodyWithMetadata(final BsonOutput bsonOutput) { bsonOutput.writeInt32(0); // reserved bsonOutput.writeCString(getCollectionName()); if (deleteRequest.isMulti()) { bsonOutput.writeInt32(0); } else { bsonOutput.writeInt32(1); } int firstDocumentStartPosition = bsonOutput.getPosition(); addDocument(deleteRequest.getFilter(), bsonOutput, new NoOpFieldNameValidator()); return new EncodingMetadata(firstDocumentStartPosition); } }
/** * Remove documents from a collection. * * @param query the deletion criteria using query operators. Omit the query parameter or pass an empty document to delete all * documents in the collection. * @param options the options to apply to the delete operation * @return the result of the operation * @throws com.mongodb.WriteConcernException if the write failed due some other failure specific to the delete command * @throws MongoException if the operation failed for some other reason * @mongodb.driver.manual tutorial/remove-documents/ Remove Documents * @since 3.4 */ public WriteResult remove(final DBObject query, final DBCollectionRemoveOptions options) { notNull("query", query); notNull("options", options); WriteConcern writeConcern = options.getWriteConcern() != null ? options.getWriteConcern() : getWriteConcern(); DeleteRequest deleteRequest = new DeleteRequest(wrap(query, options.getEncoder())).collation(options.getCollation()); return executeWriteOperation(new DeleteOperation(getNamespace(), false, writeConcern, retryWrites, singletonList(deleteRequest))); }
writer.writeStartDocument(); writer.writeName("q"); getCodec(deleteRequest.getFilter()).encode(writer, deleteRequest.getFilter(), EncoderContext.builder().build()); writer.writeInt32("limit", deleteRequest.isMulti() ? 0 : 1); if (deleteRequest.getCollation() != null) { writer.writeName("collation"); BsonDocument collation = deleteRequest.getCollation().asDocument(); getCodec(collation).encode(writer, collation, EncoderContext.builder().build());
private static boolean isRetryable(final WriteRequest writeRequest) { if (writeRequest.getType() == UPDATE || writeRequest.getType() == REPLACE) { return !((UpdateRequest) writeRequest).isMulti(); } else if (writeRequest.getType() == DELETE) { return !((DeleteRequest) writeRequest).isMulti(); } return true; }
/** * Remove documents from a collection. * * @param query the deletion criteria using query operators. Omit the query parameter or pass an empty document to delete all * documents in the collection. * @param options the options to apply to the delete operation * @return the result of the operation * @throws com.mongodb.WriteConcernException if the write failed due some other failure specific to the delete command * @throws MongoException if the operation failed for some other reason * @mongodb.driver.manual tutorial/remove-documents/ Remove Documents * @since 3.4 */ public WriteResult remove(final DBObject query, final DBCollectionRemoveOptions options) { notNull("query", query); notNull("options", options); WriteConcern writeConcern = options.getWriteConcern() != null ? options.getWriteConcern() : getWriteConcern(); DeleteRequest deleteRequest = new DeleteRequest(wrap(query, options.getEncoder())).collation(options.getCollation()); return executeWriteOperation(new DeleteOperation(getNamespace(), false, writeConcern, retryWrites, singletonList(deleteRequest))); }
writer.writeStartDocument(); writer.writeName("q"); getCodec(deleteRequest.getFilter()).encode(writer, deleteRequest.getFilter(), EncoderContext.builder().build()); writer.writeInt32("limit", deleteRequest.isMulti() ? 0 : 1); if (deleteRequest.getCollation() != null) { writer.writeName("collation"); BsonDocument collation = deleteRequest.getCollation().asDocument(); getCodec(collation).encode(writer, collation, EncoderContext.builder().build());
@Override protected BsonDocument getAsWriteCommand(final ByteBufferBsonOutput bsonOutput, final int firstDocumentPosition) { BsonDocument deleteDocument = new BsonDocument("q", createOne(bsonOutput, firstDocumentPosition)) .append("limit", deleteRequest.isMulti() ? new BsonInt32(0) : new BsonInt32(1)); return getBaseCommandDocument("delete").append("deletes", new BsonArray(singletonList(deleteDocument))); }
} else if (writeModel instanceof DeleteOneModel) { DeleteOneModel<TDocument> deleteOneModel = (DeleteOneModel<TDocument>) writeModel; writeRequest = new DeleteRequest(toBsonDocument(deleteOneModel.getFilter())).multi(false) .collation(deleteOneModel.getOptions().getCollation()); } 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()));
@Override protected EncodingMetadata encodeMessageBodyWithMetadata(final BsonOutput bsonOutput) { bsonOutput.writeInt32(0); // reserved bsonOutput.writeCString(getCollectionName()); if (deleteRequest.isMulti()) { bsonOutput.writeInt32(0); } else { bsonOutput.writeInt32(1); } int firstDocumentStartPosition = bsonOutput.getPosition(); addDocument(deleteRequest.getFilter(), bsonOutput, new NoOpFieldNameValidator()); return new EncodingMetadata(firstDocumentStartPosition); } }
private static boolean isRetryable(final WriteRequest writeRequest) { if (writeRequest.getType() == UPDATE || writeRequest.getType() == REPLACE) { return !((UpdateRequest) writeRequest).isMulti(); } else if (writeRequest.getType() == DELETE) { return !((DeleteRequest) writeRequest).isMulti(); } return true; }
static void validateWriteRequestCollations(final ConnectionDescription connectionDescription, final List<? extends WriteRequest> requests, final WriteConcern writeConcern) { Collation collation = null; for (WriteRequest request : requests) { if (request instanceof UpdateRequest) { collation = ((UpdateRequest) request).getCollation(); } else if (request instanceof DeleteRequest) { collation = ((DeleteRequest) request).getCollation(); } if (collation != null) { break; } } validateCollationAndWriteConcern(connectionDescription, collation, writeConcern); }
@Override com.mongodb.bulk.WriteRequest toNew(final DBCollection dbCollection) { return new DeleteRequest(new BsonDocumentWrapper<DBObject>(query, this.codec)).multi(isMulti()).collation(collation); } }
@Override protected BsonDocument getAsWriteCommand(final ByteBufferBsonOutput bsonOutput, final int firstDocumentPosition) { BsonDocument deleteDocument = new BsonDocument("q", createOne(bsonOutput, firstDocumentPosition)) .append("limit", deleteRequest.isMulti() ? new BsonInt32(0) : new BsonInt32(1)); return getBaseCommandDocument("delete").append("deletes", new BsonArray(singletonList(deleteDocument))); }
} else if (writeModel instanceof DeleteOneModel) { DeleteOneModel<TDocument> deleteOneModel = (DeleteOneModel<TDocument>) writeModel; writeRequest = new DeleteRequest(toBsonDocument(deleteOneModel.getFilter())).multi(false) .collation(deleteOneModel.getOptions().getCollation()); } 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()));