I'm trying to use $setOnInsert using javascript, so I can insert the created_timestamp just the first time it hits Mongo. 
var uri = new Packages.com.mongodb.MongoClientURI("mongodb://usr:pwd@localhost:27017/admin");
var mongoClient = new Packages.com.mongodb.MongoClient(uri);
var database = mongoClient.getDatabase("mydb");
var collection = database.getCollection("mycollection");
var curdate = DateUtil.getCurrentDate('yyyy-MM-dd');
var jsonDoc = JSON.stringify( 
    {       "unique_id": uid  //comes from a var from other part of the code
            "user" : {
            "id": id,
            "first": first,
            "last": last,   
            $setOnInsert: {"created_timestamp": curdate},
            "modified_timestamp": curdate
    }
);
var doc = Packages.org.bson.Document.parse(jsonDoc);
var comp = Packages.org.bson.Document.parse(JSON.stringify({"unique_id": idd}));
collection.replaceOne(comp, doc, (new com.mongodb.client.model.UpdateOptions().upsert(true)));  
mongoClient.close();
And I'm receiving always a message that says that $setOnInsert is an invalid BSON field. What should I do? 
BTW, I'm doing this javascript in Mirth. And already have its JARs, they are working fine when I'm just inserting documents. But I've been having this problem when I want to create the timestamp.
UPDATE
When I'm trying to use updateOne(), instead of replaceOne() Mirth gives me this error: 
LINE NUMBER: 2030 DETAILS: Wrapped java.lang.IllegalArgumentException: Invalid BSON field name unique_id
When using this line:
collection.updateOne(comp, doc, (new com.mongodb.client.model.UpdateOptions().upsert(true)));   
//line 2030
Even using Update, I don't know how should I use the setOnInsert function from this driver. Sincerelly, I'm not good when it comes to javascript.
                        
To my knowledge,
replaceOne()does not support$setOnInsert.And am uncertain as to how the precise Mirth syntax should look like and I do not have an environment to try it out. However, in raw MongoDB syntax, what you want to get is something like this:
I hope this helps a little.
Update:
I would suggest you try passing the following instance to your updateOne command as the second parameter: