DBZ-987 Allow to processes full document updates

This commit is contained in:
Renato Mefi 2018-11-16 15:33:55 +01:00 committed by Gunnar Morling
parent c540391db2
commit b2aed1f46e

View File

@ -143,10 +143,6 @@ public R apply(R r) {
if (patchRecord.value() != null) { if (patchRecord.value() != null) {
document = BsonDocument.parse(patchRecord.value().toString()); document = BsonDocument.parse(patchRecord.value().toString());
if (!document.containsKey("$set") && !document.containsKey("$unset")) {
throw new ConnectException("Unable to process Mongo Operation, a '$set' or '$unset' is necessary.");
}
valueDocument = new BsonDocument(); valueDocument = new BsonDocument();
if (document.containsKey("$set")) { if (document.containsKey("$set")) {
@ -166,6 +162,17 @@ public R apply(R r) {
} }
} }
if (!document.containsKey("$set") && !document.containsKey("$unset")) {
if (!document.containsKey("_id")) {
throw new ConnectException("Unable to process Mongo Operation, a '$set' or '$unset' is necessary " +
"for partial update or '_id' is expected for full Document replaces.");
}
// In case of a full update we can use the whole Document as it is
// see https://docs.mongodb.com/manual/reference/method/db.collection.update/#replace-a-document-entirely
valueDocument = document;
valueDocument.remove("_id");
}
if (!valueDocument.containsKey("id")) { if (!valueDocument.containsKey("id")) {
valueDocument.append("id", keyDocument.get("id")); valueDocument.append("id", keyDocument.get("id"));
} }