This is an automated email from the ASF dual-hosted git repository.
mattcasters pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new ccbb978c85 Fix MongoDB ObjectId JSON match fields (#7492)
ccbb978c85 is described below
commit ccbb978c85c7e7a30b70953670f703d695a13f96
Author: Gabriel Dutra <[email protected]>
AuthorDate: Sun Jul 12 07:39:44 2026 -0700
Fix MongoDB ObjectId JSON match fields (#7492)
Co-authored-by: gabrieldutra <[email protected]>
---
.../mongodboutput/MongoDbOutputData.java | 2 +-
.../mongodboutput/MongoDbOutputDataTest.java | 24 ++++++++++++++++++++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git
a/plugins/tech/mongodb/src/main/java/org/apache/hop/pipeline/transforms/mongodboutput/MongoDbOutputData.java
b/plugins/tech/mongodb/src/main/java/org/apache/hop/pipeline/transforms/mongodboutput/MongoDbOutputData.java
index a81160d2bd..4fd4096857 100644
---
a/plugins/tech/mongodb/src/main/java/org/apache/hop/pipeline/transforms/mongodboutput/MongoDbOutputData.java
+++
b/plugins/tech/mongodb/src/main/java/org/apache/hop/pipeline/transforms/mongodboutput/MongoDbOutputData.java
@@ -815,7 +815,7 @@ public class MongoDbOutputData extends BaseTransformData
implements ITransformDa
{
String val = hopType.getString(hopValue);
if (hopValueIsJSON) {
- valueToSet = Document.parse(val);
+ valueToSet = Document.parse("{\"value\":" + val +
"}").get("value");
} else {
valueToSet = val;
}
diff --git
a/plugins/tech/mongodb/src/test/java/org/apache/hop/pipeline/transforms/mongodboutput/MongoDbOutputDataTest.java
b/plugins/tech/mongodb/src/test/java/org/apache/hop/pipeline/transforms/mongodboutput/MongoDbOutputDataTest.java
index 0b962663c8..0f40445980 100644
---
a/plugins/tech/mongodb/src/test/java/org/apache/hop/pipeline/transforms/mongodboutput/MongoDbOutputDataTest.java
+++
b/plugins/tech/mongodb/src/test/java/org/apache/hop/pipeline/transforms/mongodboutput/MongoDbOutputDataTest.java
@@ -46,6 +46,7 @@ import
org.apache.hop.mongo.wrapper.collection.MongoCollectionWrapper;
import
org.apache.hop.pipeline.transforms.mongodboutput.MongoDbOutputMeta.MongoIndex;
import org.bson.Document;
import org.bson.conversions.Bson;
+import org.bson.types.ObjectId;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -257,6 +258,29 @@ class MongoDbOutputDataTest {
assertThat(result.get("foo"), equalTo(expected.get("foo")));
}
+ @Test
+ void testGetQueryObjectWithIncomingObjectIdJson() throws HopException {
+ MongoDbOutputMeta.MongoField field = new MongoDbOutputMeta.MongoField();
+ field.inputJson = true;
+ field.updateMatchField = true;
+ field.mongoDocPath = "_id";
+ field.environUpdateMongoDocPath = "_id";
+ when(rowMeta.getValueMeta(anyInt())).thenReturn(valueMeta);
+ when(valueMeta.getType()).thenReturn(IValueMeta.TYPE_STRING);
+ when(valueMeta.getString(any(Object.class)))
+ .thenReturn("{\"$oid\":\"6a15efdd0a93aa5ed3b4b947\"}");
+
+ Document result =
+ MongoDbOutputData.getQueryObject(
+ Collections.singletonList(field),
+ rowMeta,
+ new Object[] {"object id"},
+ variables,
+ MongoDbOutputData.MongoTopLevel.RECORD);
+
+ assertThat(result.get("_id"), equalTo(new
ObjectId("6a15efdd0a93aa5ed3b4b947")));
+ }
+
@Test
void testWrapperMethods() {
MongoDbOutputData data = new MongoDbOutputData();