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}
);
}
...