How to not push objects into array if already exist with findOneAndUpdate?

A property in document is an array of object. If object already exists, I dont want to push same object. I want to check it based on the date and time. I have no idea how to do it and not sure how to apply what I have seen so far.

{
    "_id" : ObjectId("637b99xxx977"),
    "name" : "product1",
      "reports" : [
        {
            "_id" : ObjectId("63f60fe2029fcd31b93870d3"),
            "name" : "product1",
            "title" : "hi",
            "dateTime" : ISODate("2023-02-22T12:51:31.993+0000"),
            "createdAt" : ISODate("2023-02-22T12:51:46.351+0000")
        },
       ],
    ....
}
...
       const reports = [{name: "product2", dateTime: ...}, {},...];
       for (let key in reports) {
            await Station.findOneAndUpdate({name: key}, {
                    $push: {
                        reports: {
                            $cond:{
                                if: {$inc: {"reports.$[elem].dateTime" - reports[key].dateTime == 0}}, // --> doesnt work
                                if: {$in: reports.map(function(x) { return x.dateTime ===reports[key].dateTime } )}, // __> doesnt work
                                then: "$reports",
                                else: {
                                 '$each': [...reports[key]],
                            '$sort': {
                                createdAt: -1
                            }
                                }
                            },
                        }
                    }, $set: {someotherProp: true}
                }, {new: true}
            );
     }
...

It looks like $addToSet might be what you are looking for. It is like $push but does nothing if the element already exists in the array.