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();

Reply via email to